ある種のスクリプトでコンテンツのさまざまなブランチを作成する必要があります。これを行う基本的な方法は、コンテンツをデータベースに追加し(この場合、マスターブランチにコミットするだけで)、一時的なインデックスで、各ブランチに必要なすべてのコンテンツを読み込むことです(git read -tree / git update-index)、そのツリーの書き込み(git write-tree)、コミットオブジェクトの書き込み(git commit-tree)、およびその新しいコミットへのブランチの更新(git update-ref)。これらはすべて、日常業務では通常使用されない配管コマンドですが、ディスク上のディレクトリにすべてのコンテンツを同時に含めることなくスナップショットを作成できます。
このようなことを行うためのスクリプトの例は次のとおりです。
http://github.com/schacon/gitcrazy/blob/master/update_content.rb
ここでは、それぞれが1つ以上の役割(「memcache」、「database」、または「webserver」)を持ついくつかのサーバーを定義します。次に、次のような役割にコンテンツを追加できます。
$ update_content.rb /path/to/content file_name memcache
これにより、コンテンツがgit dbに追加され、影響を受けるサーバー(この場合はmemcacheロールを持つサーバー)のブランチが更新されます。私は任意の役割の複数のファイルに対してそれを行うことができ、gitは各サーバーが持つべきコンテンツを追跡します。次に、各サーバーは特定のブランチ('server / s1'、'server / s2'など)をフェッチできます。
私はこれをすぐに示す簡単なスクリーンキャストを行うことを考えています-サンプルスクリプトが役立つことを願っています。実行して何が起こっているのかを理解するのは非常に簡単なはずです。同じプロジェクトに、どのサーバーブランチにどのコンテンツがあるかを一覧表示する「list」スクリプトがあります。