Git gc или prune одновременно с получением

Git gc или prune одновременно с получением

Имеется два хозяина A и B.

A обслуживает Git и получает обороты, отправленные B.

B только толкает и никогда не принимает, если только не тянет сам по себе.

Можно настроить B на сборку мусора или обрезку оборотов, поскольку нет опасений относительно параллельных операций, однако может ли B направить обороты на A, пока A выполняет сборку мусора или обрезку? Что произойдет?

По сути, я хочу знать, нужно ли мне отключать связь с A при выполнении GC или prune, или в этом нет необходимости.

решение1

Git GC'sстраница руководствасостояние:

Если git gc работает одновременно с другим процессом, есть риск, что он удалит объект, который другой процесс использует, но не создал ссылку на него. Это может просто привести к сбою другого процесса или повредить репозиторий, если другой процесс позже добавит ссылку на удаленный объект. У Git есть две функции, которые значительно смягчают эту проблему:

  1. Любой объект, время изменения которого более позднее, чем дата --prune, сохраняется, а также все, к чему можно получить доступ из него.

  2. Большинство операций, добавляющих объект в базу данных, обновляют время модификации объекта, если он уже присутствует, поэтому применяется пункт 1.

Однако эти функции не обеспечивают комплексного решения, поэтому пользователям, которые запускают команды одновременно, приходится мириться с некоторым риском повреждения данных (который на практике, по-видимому, невелик).

И далее:

--prune=<date>

Удаляет свободные объекты старше даты (по умолчанию 2 недели назад, переопределяется переменной конфигурации gc.pruneExpire). --prune=nowУдаляет свободные объекты независимо от их возраста и увеличивает риск повреждения, если другой процесс одновременно записывает данные в репозиторий; см. «ПРИМЕЧАНИЯ» ниже. --prune включено по умолчанию.

Так что да, риск есть. Однако, если часы A и B достаточно синхронизированы, а команды Git, которые вы применяете к репозиторию, не занимают больше двух недель, я бы посчитал риск одновременной отправки и сборки мусора в одном и том же репозитории приемлемым.

Связанный контент