1

私のユースケースはこれです...

2 つの生産ブランチを持つプロジェクトがあります。ブランチのほとんどの変更は、他のブランチにマージする必要があります。2 つのブランチで別々に保持する必要があるのは、非常に具体的で頻度の低い変更のみです。

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

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

4

1 に答える 1

2

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

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

.git/hooks/ フォルダーに post-receive.sample ファイルがあります。名前を post-receive に変更し、実行可能であることを確認します。bash では次のようになります。

#!/bin/sh
# <oldrev> <newrev> <refname>
while read oldrev newrev ref
do
    echo "$oldrev $newrev $ref"
done
于 2012-04-04T23:05:21.430 に答える