Остановка git gc --aggressive, это плохо? - PullRequest
31 голосов
/ 20 мая 2011

Я управляю git gc --aggressive на очень большом репо (apx 100 ГБ).Он запущен две ночи назад, и на пару часов он застрял на: «Сжатие объектов: 99% (76496/76777)»

Если I Ctrl - C процесс, каковы последствия?Будет ли мой репо непригодным для использования?Моя интуиция говорит, что нет, но я хотел бы получить некоторые мнения.Спасибо!

Ответы [ 3 ]

30 голосов
/ 20 мая 2011

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

Они помогают, только если ваша проблема заключается в том, что у вас недостаточно памяти.

7 голосов
/ 23 марта 2017

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.

3 голосов
/ 07 апреля 2014

Примечание: есть интересная эволюция для git 2.0 (2 квартал 2014 г.) :

"git gc --aggressive" learn "--depth" и "gc.aggressiveDepth "переменная конфигурации, позволяющая использовать меньшую глубину безумия, чем встроенное значение по умолчанию 250.

Это описано в commit 125f814 , выполненном Nguy Thn Thái Ngọc Duy (pclouds) :

Когда 1c192f3 (gc --aggressive: сделать его действительно агрессивным - 2007-12-06) сделал --depth=250значение по умолчанию, оно на самом деле не объясняет причину, особенно плюсы и минусы --depth=250.

Старая почта от Линуса ниже объясняет это подробно.
Короче говоря, --depth=250 - это дисковая заставка и убийца производительности .
Не все согласны с такой агрессивностью.
Позвольте пользователю настроить его.

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

...