Drupal を使用するサイトがいくつかあり、ライブ、dev1、dev2 などのサーバーがいくつかあります。
Drupal のコードベース リポジトリは大きい (112Mb) ため、サイトを追加するたびにこれが重複しないように、git のハードリンク機能を最大限に活用したいと考えています。
たとえば、ライブサーバーには裸のマスターレポがあり、すべてのサイトはこれのクローンであり、それぞれが異なるブランチを使用しています。これは、ハード リンクが使用される 1 台のサーバーで優れており、高速で効率的です。
しかし、私の開発サーバーでは、通常、それらはすべてベア マスター リポジトリから複製されます。つまり、同じマシン上の 2 つのサイトがハード リンクを使用してスペースを節約することはできません。
私がやりたいのは、各開発サーバーに裸のレポのミラーを設定し、そこから複製することです。
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
これまでのところすべて順調です。しかし、私はミラーが常に同期していることを望んでいます。そこで、dev1 のミラーでpost-receive フックgit push --mirror origin
を使用して. これで、dev1 の site1 がコミットをプッシュすると、それらは魔法のように master-bare-repo にプッシュされます。
しかし、ライブサーバーに変更を加えてそれをプッシュするとどうなるでしょうか? フックを設定しpost-receive
て他の人にプッシュすることはできません。これは、おそらく再帰的になるフックをトリガーするためですか? post-receive
これを回避する賢い方法はありますか?