Остановка git gc --aggressive, это плохо?
Я бегу git gc --aggressive
на очень большой репо (около 100 ГБ). Он работает с двух ночей назад, и на пару часов он застрял на: "Сжатие объектов: 99% (76496/76777)"
Если я Ctrl-C процесс, каковы последствия? Будет ли мой репо непригодным для использования? Моя интуиция говорит, что нет, но я хотел бы получить некоторые мнения. Спасибо!
3 ответа
git должен быть всегда защищен от подобных прерываний. Если вы беспокоитесь, я предлагаю Ctrl+Z, а затем запустить git fsck --full
чтобы убедиться, что система соответствует.
Существует ряд переменных git-config, которые могут помочь вашему git-gc работать быстрее. Я использую следующее в одном конкретном репо, но есть еще много вариантов, которые можно попробовать случайным образом (или тщательно изучить, в зависимости от того, что именно).
git config pack.threads 1
git config pack.deltaCacheSize 1
git config core.packedGitWindowSize 16m
git config core.packedGitLimit 128m
git config pack.windowMemory 512m
Это поможет, только если ваша проблема заключается в том, что у вас недостаточно памяти.
FWIW, я просто испортил хранилище, отменив git gc
с помощью CTRL+C. git fsck
Теперь отображаются следующие ошибки:
error: HEAD: invalid sha1 pointer [...]
error: refs/heads/master does not point to a valid object!
notice: No default references
И довольно много
dangling commit [...]
Я не собираюсь исследовать это, но я хотел бы отметить, что я собираюсь избегать прерывания git gc
,
Примечание: есть интересная эволюция для git 2.0 (2 квартал 2014 года):
опция "git gc --aggressive" learn "--depth" и переменная конфигурации "gc.aggressiveDepth" позволяют использовать меньшую глубину безумия, чем встроенное значение по умолчанию 250.
Это описано в коммите 125f814, сделанном Нгуеном Тай Нгом Дуй ( pclouds
):
Когда 1c192f3 (
gc --aggressive
: сделай его действительно агрессивным - 2007-12-06) сделал--depth=250
значение по умолчанию, оно не объясняет причину, особенно плюсы и минусы--depth=250
,Старое письмо от Линуса ниже объясняет это подробно.
Короче,--depth=250
это заставка диска и убийца производительности.
Не все согласны с этой агрессивностью.
Позвольте пользователю настроить его.
Это может помочь избежать проблемы "зависания", которая возникает у вас при запуске этой команды на больших репозиториях.