Manteniendo git mirrors sincronizados en todo momento.

Tengo varios sitios que usan Drupal, tengo varios servidores, live, dev1, dev2 ...

El repositorio de la base de código de Drupal es grande (112Mb), así que estoy dispuesto a aprovechar al máximo las capacidades de vinculación de Git para que cada vez que agregué un sitio no se duplique esto.

Entonces, digamos, el servidor en vivo tengo un repositorio principal y todos mis sitios son clones de esto, cada uno con una rama diferente. Esto es excelente en un servidor, se usan enlaces duros, es rápido y eficiente.

Pero en mis servidores de desarrollo, normalmente todos se clonan desde el repositorio principal, lo que significa que dos sitios en la misma máquina no pueden usar enlaces duros para ahorrar espacio.

Lo que me gustaría hacer es configurar un espejo del repositorio en cada uno de mis servidores dev, y luego clonar desde eso.

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

Todo bien hasta ahora. Pero quiero que los espejos permanezcan sincronizados en todo momento. Asi que utilicégancho posterior a la recepción en el espejo de dev1 para hacergit push --mirror origin. Ahora, si site1 en dev1 empuja las confirmaciones, son empujadas mágicamente al master-bare-repo.

Pero ¿Qué pasa si hago un cambio en elvivir servidor, y empujar eso? No puedo configurar unpost-receive enganche para empujar a los otros porque eso presumiblemente se dispararíasu post-receive ¿Ganchos que acabarían en recursión?

¿Hay alguna manera inteligente de evitar esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta