PS . Справедливое предупреждение:
git
обычно считается невероятно быстрым. Вы должны попытаться клонировать полное репо из darcs, bazaar, hg (не дай бог: TFS или subversion ...). Кроме того, если вы регулярно клонируете полные репозитории с нуля, вы все равно делаете что-то не так. Вы всегда можете просто git remote update
и получать пошаговые изменения.
О различных других способах синхронизации репо переполненных см., Например,
(Содержит ссылки на другие соответствующие сообщения SO)
Тупая копия
Как уже упоминалось, вы можете просто скопировать репозиторий с «тупой» передачей файлов.
Это, безусловно, не будет тратить время на сжатие, переупаковку, разложение и / или фильтрацию.
Плюс, вы получите
Это может или не может не быть тем, что вам требуется, но приятно осознавать факт
Bundle
Git clone по умолчанию оптимизирует пропускную способность. Поскольку git clone по умолчанию не mirror всех ветвей (см. --mirror
), не имеет смысла просто сохранять файлы пакета как есть (потому что это отправит, возможно, намного больше, чем требуется) .
При рассылке действительно большому числу клиентов рассмотрите возможность использования связок .
Если вам нужен быстрый клон без затрат на стороне сервера, git way - это bundle create
. Теперь вы можете распространять пакет без участия сервера. Если вы имеете в виду, что bundle... --all
включает в себя более простой git clone
, рассмотрим, например, bundle ... master
для уменьшения громкости.
git bundle create snapshot.bundle --all # (or mention specific ref names instead of --all)
и вместо этого распространяйте комплект снимков. Это лучшее из обоих миров, хотя, конечно, вы не получите предметы из списка выше. На приемном конце просто
git clone snapshot.bundle myclonedir/
Сжатие конфигов
Вы можете посмотреть на снижение нагрузки на сервер, уменьшив / удалив сжатие.
Посмотрите на эти настройки конфигурации (я полагаю, pack.compression
может помочь вам снизить нагрузку на сервер)
core.compression
Целое число -1..9, указывающее уровень сжатия по умолчанию. -1 по умолчанию для zlib. 0 означает отсутствие сжатия, а 1..9 - это различные компромиссы между скоростью и размером, 9 - самый медленный. Если установлено, это обеспечивает значение по умолчанию для других переменных сжатия, таких как
core.loosecompression и pack.compression.
core.loosecompression
Целое число -1..9, указывающее уровень сжатия для объектов, которых нет в файле пакета. -1 по умолчанию для zlib. 0 означает отсутствие сжатия, а 1..9 - это различные компромиссы между скоростью и размером, 9 - самый медленный. Если не установлено, по умолчанию
core.compression. Если это не установлено, по умолчанию 1 (лучшая скорость).
pack.compression
Целое число -1..9, указывающее уровень сжатия для объектов в файле пакета. -1 по умолчанию для zlib. 0 означает отсутствие сжатия, а 1..9 - это различные компромиссы между скоростью и размером, 9 - самый медленный. Если не установлено, по умолчанию используется core.compression. Если это
не установлено, по умолчанию -1, по умолчанию zlib, что является «компромиссом по умолчанию между скоростью и сжатием (в настоящее время эквивалентным уровню 6)».
Обратите внимание, что изменение уровня сжатия не приведет к автоматическому повторному сжатию всех существующих объектов. Вы можете принудительно выполнить повторное сжатие, передав опцию -F в git-repack (1).
Учитывая достаточную пропускную способность сети, на самом деле приведет к более быстрым клонам. Не забывайте о git-repack -F
, когда вы решите это сделать!