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