Ускорить git -fetch-пакет? - PullRequest
       20

Ускорить git -fetch-пакет?

0 голосов
/ 13 апреля 2020

У нас есть сотни тысяч ссылок в нашем репо (самодостаточном сервере битбакетов). Большинство из них являются тегами. Всякий раз, когда запускается git fetch, даже при извлечении одной ветки, он вызывает git-fetch-pack внизу, который, по-видимому, должен загрузить всю пачку ссылок размером в десятки мегабайт и для ее загрузки требуется десятки секунд или несколько минут. наши сотрудники работают из отдаленных мест или даже из-за рубежа.

Есть ли способ оптимизировать git fetch, чтобы при извлечении одной ветки он загружал не весь пакет ссылок, а вместо этого ссылку одной ветки

Большое спасибо!

1 Ответ

3 голосов
/ 13 апреля 2020

Git имеет давнюю проблему с внутренним транспортным протоколом: если один Git вызывает другой Git, , вызываемый Git, затем перечисляет все его ветви и имена тегов и га sh идентификаторы:

... похоже, нужно загрузить всю пачку ссылок, которая имеет размер десятков МБ и занимает десятки секунд или несколько минут ...

Поскольку транспортный протокол версии 1 требует выполнения этой транзакции, вы застряли с ней, пока ваш Git использует транспортный протокол версии 1.

Для решения этой проблемы в Git 2.18 была введена новая версия протокола 2. Его можно включить в версиях Git на этом уровне или позже. В Git 2.19.0 было одно исправление. Это стало значением по умолчанию в Git 2.26.0, так что оно не требует отдельного включения; по-видимому, это означает, что на этом этапе исправляются мелкие недоработанные ошибки.

Чтобы использовать это легко и автоматически, вы можете установить Git версии 2.26.0 или новее с обеих сторон (сервер и клиент).

Чтобы использовать версию протокола 2 в более ранних версиях Git (которая должна быть не менее 2,18), см. на этой странице GitLab .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...