Работа с большими репозиториями

Завершено

Git — это отличная система управления версиями, которая широко используется и рекомендуется, но при работе с большими репозиториями следует учитывать и решать некоторые вопросы.

Хотя локальная копия репозиториев в распределенной системе управления версиями работает, это может быть значительной проблемой при наличии крупных репозиториев.

Например, корпорация Майкрософт обнаружила эту проблему при переносе репозитория с более чем 300 ГБ данных из внутренней системы в Git.

Почему репозитории становятся большими

Существует две основные причины для крупных репозиториев:

  • Долгая история
  • Большие двоичные файлы

Поверхностное клонирование

Если разработчикам не нужен весь доступный журнал в своих локальных репозиториях, хороший вариант — реализовать поверхностный клон.

Он экономит пространство как в локальных системах разработки, так и время, необходимое для синхронизации.

Можно указать глубину копирования, которое вы хотите выполнить.

git clone --depth [depth] [clone-url]

Кроме того, можно уменьшить клоны, отфильтровав ветви или клонируя только одну ветвь.

VFS для Git

VFS для Git помогает с большими репозиториями. Для этого требуется клиент Git LFS.

Обычные команды Git остаются без изменений, а Git LFS взаимодействует со стандартной файловой системой, чтобы загружать необходимые файлы в фоновом режиме, когда вам нужны файлы с сервера.

Клиент Git LFS был выпущен как открытый исходный код. Протокол является простым с четырьмя конечными точками, похожими на конечные точки REST.

Для получения дополнительной информации о крупных репозиториях см. разделы: Работа с большими файлами и Виртуальная файловая система для Git: внедрение Git в масштабе предприятия.

Скаляр

снимок экрана с значком Scalar.

Скаляр — это приложение .NET Core, доступное для Windows и macOS. Средства и расширения для Git, позволяющие очень большим репозиториям максимально повысить производительность команд Git. Корпорация Майкрософт использует его для репозиториев Windows и Office.

Если Azure Repos размещает репозиторий, вы можете клонировать репозиторий с помощью протокола GVFS.

Это достигается путем включения некоторых расширенных функций Git, таких как:

  • Частичное клонирование: сокращает время, чтобы получить рабочий репозиторий, не скачивая все объекты Git сразу.
  • фоновой предварительной загрузки: скачивает данные объектов Git из всех удаленных репозиториев каждый час, уменьшая время на выполнение команды git fetch в переднем плане.
  • Спарс-чекаут: ограничивает размер рабочего каталога.
  • монитор файловой системы: отслеживает недавно измененные файлы и устраняет необходимость для Git проверять всё рабочее дерево.
  • Граф коммитов: ускоряет обходы коммитов и вычисления достижимости, что ускоряет выполнение команд, таких как git log.
  • многопакетный индекс: обеспечивает быстрый поиск объектов во многих файлах пакета.
  • инкрементная перепаковка: перепаковывает упакованные данные Git в меньшее количество паковочных файлов, не прерывая выполнение параллельных команд с использованием многопакетного индекса.

Заметка

Мы обновляем список функций, которые Scalar автоматически настраивает, когда выпускается новая версия Git.

Дополнительные сведения см. в следующем разделе: