Halten Sie die Spiegel der Git jederzeit synchron

Ich habe mehrere Sites, die Drupal verwenden, ich habe mehrere Server, live, dev1, dev2 ...

Drupals Codebasis-Repository ist groß (112 MB), daher bin ich daran interessiert, die Hardlinking-Fähigkeiten von GIT optimal zu nutzen, damit es bei jedem Hinzufügen einer Site keine Duplizierung gibt.

Auf dem Live-Server habe ich beispielsweise ein Bare-Master-Repo, und alle meine Sites sind Klone davon, die jeweils einen anderen Zweig verwenden. Das ist großartig auf einem Server, es werden harte Links verwendet, es ist schnell und effizient.

Aber auf meinen Dev-Servern klonen sie normalerweise alle vom Bare-Master-Repo, was bedeutet, dass zwei Sites auf demselben Computer keine festen Links verwenden können, um Speicherplatz zu sparen.

Was ich tun möchte, ist, einen Spiegel des nackten Repos auf jedem meiner Entwickler-Server einzurichten und dann von diesem zu klonen.

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

Alles gut soweit. Aber ich möchte, dass die Spiegel jederzeit synchron bleiben. Also habe ich benutztNachempfangshaken auf dev1s spiegel zu tungit push --mirror origin. Wenn site1 auf dev1 Commits pusht, werden diese auf magische Weise an das Master-Bare-Repo gepusht.

Aber Was ist, wenn ich eine Änderung an derLeben Server, und schieben Sie das? Ich kann keine einrichtenpost-receive haken, um auf den / die anderen zu drücken, da dies vermutlich auslösen würdeihr post-receive Haken, die in Rekursion enden würden?

Gibt es einen geschickten Weg, das zu umgehen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage