Git тянуть без отдаленного сжатия объектов

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

Я попытался установить core.compression = 0 на удаленном компьютере и локальную копию без успеха

git config core.compression 0
git config core.loosecompression 0

git pull still do

remote: Counting objects: 23, done.
remote: Compressing objects: ...

Ответ 1

Проблема со временем была вызвана дельта-сжатием.

Решение для меня было

echo '*.zip -delta' > .gitattributes
git gc

Я процитирую этот прекрасный ответ от http://lists-archives.com/git/719515-serious-performance-issues-with-images-audio-files-and-other-non-code-data.html

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

Для проталкивания и вытягивания вы, вероятно, видите дельта-сжатие, которое может быть медленным для больших файлов

core.compression 0 # Не похоже на работу.

Это должно отключить сжатие zlib незакрепленных объектов и объектов в пакетных файлах. Это может сэкономить немного времени для объектов, которые не будут сжиматься, но вы потеряете преимущества размера для любых текстовых файлов.

Но это не отключит дельта-сжатие, что и делает фаза "сжатие..." во время push и pull. И что является гораздо более вероятной причиной медлительности.

pack.window 0

Он устанавливает количество других объектов, которые git будет учитывать при выполнении дельта-сжатия. Низкое значение должно улучшить время пуш-пул. Но вы потеряете существенное преимущество дельта-сжатия ваших файлов, не относящихся к изображениям (и мета-объектов git). Таким образом, опция "-delta" выше для определенных файлов является гораздо лучшим решением.

echo '*.jpg -delta'>.gitattributes

Кроме того, рассмотрите возможность повторной упаковки вашего репозитория, в результате чего будет сгенерирован пакетный файл, который будет повторно использоваться во время push-pull.

Обратите внимание, что настройки должны быть сделаны для репо, из которого вы извлекаете/извлекаете, а не из того, в который вы извлекаете/извлекаете.

Ответ 2

Строка compressing object означает, что она выполняет операцию pack. Это включает в себя разные деревья и прочее. Это не "сжатие" в смысле core.compression.