Mantendo os espelhos git em sincronia em todos os momentos

Eu tenho vários sites que usam o Drupal, tenho vários servidores, live, dev1, dev2 ...

O repositório de código-base do Drupal é grande (112Mb), então estou ansioso para aproveitar ao máximo as habilidades de linkagem do git, de modo que toda vez que eu adicionar um site, ele não estará duplicando isso.

Então, digamos, no servidor ao vivo eu tenho um repositório mestre, e todos os meus sites são clones disso, cada um usando um ramo diferente. Isso é ótimo em um servidor, links rígidos são usados, é rápido e eficiente.

Mas em meus servidores de desenvolvimento, eles geralmente são clonados a partir do repositório principal, o que significa que dois sites na mesma máquina não podem usar links físicos para economizar espaço.

O que eu gostaria de fazer é configurar um espelho do repositório vazio em cada um dos meus servidores de desenvolvimento e depois clonar a partir dele.

dev1$ git clone --mirror live:master-bare-repo  dev1-mirror-repo
dev1$ git clone -b site1 dev1-mirror-repo site1
dev1$ git clone -b site2 dev1-mirror-repo site2

Tudo bem até agora. Mas eu quero que os espelhos permaneçam em sincronia o tempo todo. Então eu useigancho pós-recebimento no espelho do dev1 para fazergit push --mirror origin. Agora, se o site1 no dev1 enviar commits, eles serão magicamente enviados para o master-bare-repo.

Mas E se eu fizer uma mudança noviver servidor, e empurrar isso? Não consigo configurarpost-receive gancho para empurrar para o (s) outro (s) porque isso presumivelmenteseus post-receive ganchos que acabariam em recursão?

Existe alguma maneira inteligente de contornar isso?

questionAnswers(1)

yourAnswerToTheQuestion