Git gc ou prune simultâneo com recebimento

Git gc ou prune simultâneo com recebimento

Existem dois hospedeiros A e B.

A serve Git e recebe rotações enviadas de B.

B apenas empurra e nunca recebe, a não ser que puxe sozinho.

Pode-se definir B para GC ou reduzir as rotações porque não há medo de operações simultâneas; no entanto, B pode empurrar as rotações para A enquanto A está fazendo GC ou podando? O que acontece?

Basicamente, quero saber se devo destruir as comunicações de A ao executar GCs ou ameixas, ou não há necessidade disso.

Responder1

Git GCpágina de manualestado:

Se git gc for executado simultaneamente com outro processo, existe o risco de ele excluir um objeto que o outro processo está usando, mas para o qual não criou uma referência. Isso pode apenas causar falha no outro processo ou corromper o repositório se o outro processo adicionar posteriormente uma referência ao objeto excluído. O Git possui dois recursos que atenuam significativamente esse problema:

  1. Qualquer objeto com hora de modificação mais recente que a data --prune é mantido, junto com tudo que pode ser alcançado a partir dele.

  2. A maioria das operações que adicionam um objeto ao banco de dados atualizam o horário de modificação do objeto se ele já estiver presente, para que o número 1 se aplique.

No entanto, esses recursos ficam aquém de uma solução completa, então os usuários que executam comandos simultaneamente têm que conviver com algum risco de corrupção (que parece ser baixo na prática).

E mais:

--prune=<date>

Remova objetos soltos anteriores à data (o padrão é 2 semanas atrás, substituível pela variável de configuração gc.pruneExpire). --prune=nowremove objetos soltos independentemente de sua idade e aumenta o risco de corrupção se outro processo estiver gravando no repositório simultaneamente; veja "NOTAS" abaixo. --prune está ativado por padrão.

Então sim, existe um risco. No entanto, se os relógios de A e B estiverem razoavelmente sincronizados e os comandos Git que você aplica ao repositório não levarem mais de duas semanas para serem concluídos, eu consideraria o risco de enviar simultaneamente para e fazer GC no mesmo repositório como sendo aceitável.

informação relacionada