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

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

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

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

мерзавец еще делать

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

3 ответа

Решение

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

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

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

Я процитирую этот прекрасный ответ от http://lists-archives.org/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.

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

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

Это полезно, если на вашем удаленном сервере очень мало оперативной памяти. SSH на удаленный сервер, перейдите в репозиторий и запустите:

      git -config --add core.bigFileThreshold 1

Это отключит дельта-сжатие. если вы хотите отменить это:

      git -config --unset core.bigFileThreshold
Другие вопросы по тегам