Utrzymywanie synchronizacji git mirrors przez cały czas

Mam kilka witryn, które używają Drupala, mam kilka serwerów, live, dev1, dev2 ...

Kod repozytorium Drupala jest duży (112 MB), więc chętnie wykorzystam możliwości łączenia git, aby za każdym razem, gdy dodam stronę, nie było to powielanie.

Tak więc, powiedzmy, serwer na żywo mam nagie repozytorium master, a wszystkie moje witryny są tego typu klonami, każdy używa innej gałęzi. To jest świetne na jednym serwerze, używane są twarde łącza, jest szybkie i wydajne.

Ale na moich serwerach dev zazwyczaj klonują się z repozytorium master, co oznacza, że ​​dwie witryny na tym samym komputerze nie mogą używać twardych linków w celu zaoszczędzenia miejsca.

To, co chciałbym zrobić, to ustawić mirror nagiego repo na każdym z moich serwerów dev, a następnie sklonować go.

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

Jak dotąd wszystko dobrze. Ale chcę, aby lustra były cały czas zsynchronizowane. Więc użyłemhak po odbiorze na serwerze lustrzanym dev1git push --mirror origin. Teraz, jeśli site1 na dev1 popycha commits, są magicznie wypychani do master-bare-repo.

Ale co jeśli zrobię zmianę narelacja na żywo serwer i wcisnąć to? Nie mogę skonfigurowaćpost-receive hak do popchnięcia do drugiego (ych), ponieważ przypuszczalnie to się uruchomiich post-receive haki, które skończyłyby się rekursją?

Czy jest jakiś sprytny sposób na to?

questionAnswers(1)

yourAnswerToTheQuestion