Этапы git clone
:
- Получение файла "pack" всех объектов в базе данных репо
- Создание файла индекса для полученного пакета
- Проверьте ревизию руководителя (очевидно, для репозитория не-голого типа)
«Разрешение дельт» - это сообщение, показанное для второго этапа, индексирование файла пакета («git index-pack ").
Файлы пакета не содержат действительные идентификаторы объектов, только содержимое объекта.Таким образом, чтобы определить идентификаторы объектов, git должен выполнить распаковку + SHA1 для каждого объекта в пакете, чтобы получить идентификатор объекта, который затем записывается в индексный файл.
Объект в файле пакетаможет быть сохранен как дельта, то есть последовательность изменений, чтобы сделать к некоторому другому объекту.В этом случае git необходимо извлечь базовый объект, применить команды и получить результат SHA1.Сам базовый объект может быть получен путем применения последовательности дельта-команд.(Несмотря на то, что в случае клона базовый объект уже встречался, существует ограничение на количество кэшируемых в памяти производимых объектов).
Таким образом, этап «разрешения дельт» включаетраспаковка и контрольная сумма всей базы данных репо, что неудивительно, занимает довольно много времени.Предположительно распаковка и вычисление SHA1 на самом деле занимает больше времени, чем применение дельта-команд.
В случае последующей выборки полученный файл пакета может содержать ссылки (как базы дельта-объектов) на другие объекты, которые получает получательОжидается, что уже есть.В этом случае принимающий git фактически переписывает полученный файл пакета, чтобы включить в него любые такие объекты, на которые ссылаются, так что любой сохраненный файл пакета является самодостаточным.Это может быть то место, где возникло сообщение «Разрешение дельт».