2012-04-04 25 views
1

私の使用例は...自動git merge

私は2つのプロダクションブランチを持つプロジェクトを持っています。任意のブランチのほとんどの変更は、他のブランチにマージする必要があります。 2つの支店で別々に保管する必要があるのは、非常に具体的でまれな変更だけです。

ブランチAに何かをプッシュする人がブランチBに自動的にマージするように、本番ビルドマシンのソースとして使用されるメインリモートリポジトリの2つのブランチ間で自動マージを設定するマージされていない特別なプッシュ操作(まれにしか発生しない)を手動で処理します。

これを行う簡単な方法はありますか?

答えて

2

ポスト受信gitフックを使用できます。誰かがメインのリモートリポジトリにプッシュすると、さまざまな種類の情報、プッシュしたもの、プレビューコミットハッシュ、および新しいコミットハッシュを取得するスクリプト(フック)が呼び出されます。

ここで、どのブランチがプッシュされたかを正確に判断できます。この情報があれば、別のリポジトリで別のブランチをチェックアウトし、マージしてこの情報をプッシュアップすることができます。

あなたの.git/hooks /フォルダにpost-receive.sampleファイルがあります。ポスト受信に名前を変更し、実行可能であることを確認してください。 bashでそれは次のようになります:

#!/bin/sh 
# <oldrev> <newrev> <refname> 
while read oldrev newrev ref 
do 
    echo "$oldrev $newrev $ref" 
done 
+0

私はプッシュを中止する必要があると言う理由はわかりません...私の質問があいまいなので、そうする理由はありますか?ブランチAとブランチBで作業している開発者が組み合わされる作業の大半は、唯一の大きな違いは、それらが異なるサードパーティのライブラリにリンクするため、Makefileとヘッダーにわずかな違いがあり、それらの違いが大きく一定していることです。 – owagh

+0

しかし、ええええええええええええええええ、これを行う方法と思われる。受信後のスクリプトに関する回答にリソースへのリンクをいくつか追加できますか?私の.git/hooksフォルダの唯一の例は、post-recieveスクリプト内からどのようにマージすることができるかを実際には示していない電子メールスクリプトです。 – owagh

+0

私のスクリプトはそのまま使用できます。あなたがbashにアクセスできると仮定します。 – ralphtheninja

関連する問題