Работа с большими репозиториями
Git — это отличная система управления версиями, которая широко используется и рекомендуется, но при работе с большими репозиториями следует учитывать и решать некоторые вопросы.
Хотя локальная копия репозиториев в распределенной системе управления версиями работает, это может быть значительной проблемой при наличии крупных репозиториев.
Например, корпорация Майкрософт обнаружила эту проблему при переносе репозитория с более чем 300 ГБ данных из внутренней системы в Git.
Почему репозитории становятся большими
Существует две основные причины для крупных репозиториев:
- Долгая история
- Большие двоичные файлы
Поверхностное клонирование
Если разработчикам не нужен весь доступный журнал в своих локальных репозиториях, хороший вариант — реализовать поверхностный клон.
Он экономит пространство как в локальных системах разработки, так и время, необходимое для синхронизации.
Можно указать глубину копирования, которое вы хотите выполнить.
git clone --depth [depth] [clone-url]
Кроме того, можно уменьшить клоны, отфильтровав ветви или клонируя только одну ветвь.
VFS для Git
VFS для Git помогает с большими репозиториями. Для этого требуется клиент Git LFS.
Обычные команды Git остаются без изменений, а Git LFS взаимодействует со стандартной файловой системой, чтобы загружать необходимые файлы в фоновом режиме, когда вам нужны файлы с сервера.
Клиент Git LFS был выпущен как открытый исходный код. Протокол является простым с четырьмя конечными точками, похожими на конечные точки REST.
Для получения дополнительной информации о крупных репозиториях см. разделы: Работа с большими файлами и Виртуальная файловая система для Git: внедрение Git в масштабе предприятия.
Скаляр
Скаляр — это приложение .NET Core, доступное для Windows и macOS. Средства и расширения для Git, позволяющие очень большим репозиториям максимально повысить производительность команд Git. Корпорация Майкрософт использует его для репозиториев Windows и Office.
Если Azure Repos размещает репозиторий, вы можете клонировать репозиторий с помощью протокола GVFS.
Это достигается путем включения некоторых расширенных функций Git, таких как:
- Частичное клонирование: сокращает время, чтобы получить рабочий репозиторий, не скачивая все объекты Git сразу.
- фоновой предварительной загрузки: скачивает данные объектов Git из всех удаленных репозиториев каждый час, уменьшая время на выполнение команды git fetch в переднем плане.
- Спарс-чекаут: ограничивает размер рабочего каталога.
- монитор файловой системы: отслеживает недавно измененные файлы и устраняет необходимость для Git проверять всё рабочее дерево.
- Граф коммитов: ускоряет обходы коммитов и вычисления достижимости, что ускоряет выполнение команд, таких как git log.
- многопакетный индекс: обеспечивает быстрый поиск объектов во многих файлах пакета.
- инкрементная перепаковка: перепаковывает упакованные данные Git в меньшее количество паковочных файлов, не прерывая выполнение параллельных команд с использованием многопакетного индекса.
Заметка
Мы обновляем список функций, которые Scalar автоматически настраивает, когда выпускается новая версия Git.
Дополнительные сведения см. в следующем разделе: