
Имеется два хозяина A и B.
A обслуживает Git и получает обороты, отправленные B.
B только толкает и никогда не принимает, если только не тянет сам по себе.
Можно настроить B на сборку мусора или обрезку оборотов, поскольку нет опасений относительно параллельных операций, однако может ли B направить обороты на A, пока A выполняет сборку мусора или обрезку? Что произойдет?
По сути, я хочу знать, нужно ли мне отключать связь с A при выполнении GC или prune, или в этом нет необходимости.
решение1
Git GC'sстраница руководствасостояние:
Если git gc работает одновременно с другим процессом, есть риск, что он удалит объект, который другой процесс использует, но не создал ссылку на него. Это может просто привести к сбою другого процесса или повредить репозиторий, если другой процесс позже добавит ссылку на удаленный объект. У Git есть две функции, которые значительно смягчают эту проблему:
Любой объект, время изменения которого более позднее, чем дата --prune, сохраняется, а также все, к чему можно получить доступ из него.
Большинство операций, добавляющих объект в базу данных, обновляют время модификации объекта, если он уже присутствует, поэтому применяется пункт 1.
Однако эти функции не обеспечивают комплексного решения, поэтому пользователям, которые запускают команды одновременно, приходится мириться с некоторым риском повреждения данных (который на практике, по-видимому, невелик).
И далее:
--prune=<date>
Удаляет свободные объекты старше даты (по умолчанию 2 недели назад, переопределяется переменной конфигурации gc.pruneExpire).
--prune=now
Удаляет свободные объекты независимо от их возраста и увеличивает риск повреждения, если другой процесс одновременно записывает данные в репозиторий; см. «ПРИМЕЧАНИЯ» ниже. --prune включено по умолчанию.
Так что да, риск есть. Однако, если часы A и B достаточно синхронизированы, а команды Git, которые вы применяете к репозиторию, не занимают больше двух недель, я бы посчитал риск одновременной отправки и сборки мусора в одном и том же репозитории приемлемым.