2012-03-15 18 views
2

新しいプロジェクトに使うことができる基本的な設定用のリポジトリを作成しました。この基本的な設定は「作業中」なので、これに関する開発は進行中です。新しいプロジェクトがある場合は、基本的な設定を行い、それを使用したいと思います。新しいプロジェクトは、基本設定内のモジュールです。Git:複数のリポジトリを組み合わせる

基本設定が開発されているので、他のリポジトリに更新をプッシュしたいと思います。 Gitでこれをどうやって行うことができますか?

私はGitslaveで何かを読んだ。これはいいですか? http://gitslave.sourceforge.net/

答えて

1

私は、サブモジュールまたはスレーブを考えていない、ここで適切である:あなたが他のレポの内容とサブディレクトリを望んでいない
、あなたがレポの(更新)コンテンツをマージしたいです基本的なプロジェクトの構造。

それは、各プロジェクトのリポジトリをリモートとして「basic」レポ(git remote add basic /path/to/basic/repo)ことを追加した場合容易になり、その後、basic(例えば名前の「基本的な-BR」)ローカルブランチのレポ、とは言っブランチをマージすることを引き上げます現在の支店で

こうすれば、彼らはbasicリポジトリを定期的に取得または引き出し、必要に応じてbasic-brブランチをマージすることができます。

2

Gitslaveは、複数のreposで同じコマンドを実行する場合に使用します。この場合の唯一の適用可能性は、スーパープロジェクト(潜在的に基本リポジトリから、おそらく別のリポジトリから)を作成し、すべてのプロジェクトリポジトリを子として持つ場合です。 1つのコマンドで、基本リポジトリを指すすべてのスレーブ・リポジトリにリモートを追加し、すべてのスレーブ・リポジトリで基本ブランチをチェックアウトし、各スレーブ・リポジトリに変更を引き込み、最後に基本をマージ/リベースすることができますプロジェクトブランチ(マスタなど)に分岐します。コンフリクトを解決したら、を入力し、を押して各プロジェクトのレポを送ります。

これは変更を他のリポジトリにプッシュするのと逆ですが、マージプロセスも自動化できるので、おそらくもっと便利です。

元の要望に一貫しているもう1つのアプローチは、同じコマンドで複数のreposに基本分岐をプッシュするpushの "all"ターゲットを追加することです。 http://jeetworks.org/node/22

ただし、分かりやすい分岐戦略を持つためには、すべての状況で「基本分岐」の概念が必要であることに注意してください。具体的には、プロジェクトのブランチをベーシックブランチからブランチする必要があります。

さらに、1つのレポでそれらをすべて管理し、プロジェクトごとに1つのブランチを作成することもできます。変更を基本分岐に他のすべての適切なブランチにマージするために、いくつかの自動化を記述する必要があります。あなたのニーズ、セキュリティ、またはプロジェクトがどれほど遠く離れているか、またはプロジェクト固有の問題がどれくらいあるかによって、これは意味をなさないかもしれません。

関連する問題