Git post-receive - プッシュされたブランチがマスターとマージされているかどうかを確認する方法
-
22-09-2019 - |
質問
私たちのチームでは通常、すべてのタスクを別々のブランチにプッシュし、その後リリースマネージャーがそれらのブランチをレビューして「マスター」ブランチにマージします。
時々、チームメンバーが(プッシュする前に)自分のブランチをマスターブランチとマージするのを忘れることがあります。そこで、私がやろうとしているのは、ユーザーがプッシュした後に「マスターとマージしてください」というメッセージを出力することです。ポストで何かを確認する必要があると思います。リモートでフックを受信します。いくつか例はありますか?..または基本的に何をすべきですか?
アップデート:この主な理由 - 潜在的な競合の数を最小限に抑える (リリースマネージャーではなくコミッターが競合を解決するため)
解決
git cherry new-branch master
は、任意の出力を持っている場合は、誰かがプッシュする前にリベースしませんでした。
他のヒント
「マスターとマージ」というのは、実際には次のことを意味していると思います マスターの上にリベースする.
すべての開発者は次のことを行う必要があります。
- プルマスター
- ブランチをプッシュする前にマスター上にブランチをリベースします
リリースマネージャーがブランチをレビューした後に早送りのみのマージを実行できるようにするためです。
何らかの競合が発生した場合は、同じリリースマネージャーが開発者に通知し、(再度)マスターをプルしてリベースを実行するように依頼する必要があります。
そうすれば、リリースマネージャーではなく、開発者のみが競合の解決を担当します。
見る リベース vs.マージ
自動プロセスの場合は、中央集中型プロセスを使用します。 更新フック, 、マスターへのマージを実行しようとし、コマンドの出力の一部に「fast-forward」があるかどうかを確認します。そうでない場合、フックは次のエラーで失敗します。 git send-email
.
現時点ではそのようなスクリプトの例はありません。
これを行うには良い方法は本当にありません。かなりの数の合併症がありますが、最も明白な一つは、あなたのリベース-からマスター/プッシュ・ツー・マスター操作はアトミックではないということです。即ち誰かがこれらの間に何かを押すかもしれません。私はむしろあなたが、例えば顔をしてことをお勧め Gitorious のリリースマネージャの仕事は非常に簡単になりますました。彼は簡単に含まれてコミットして受け入れることができます/簡単にコミットを拒否するかを見ることができます。
しかし、あなたはのgit-WTFは役に立ちを見つけるかもしれません。それはあなたがまだ自動化されたソリューションを試しに主張すれば、リモート1でローカルリポジトリを比較する方法を示しています。
あなたは本当に十字に交差マージを維持する必要はありません。いずれかのトピックブランチをマスタにマージする必要がある、または枝が分離したままでなければならない、ビーイングからのマスターをマージします。
おそらく、あなたが探していることは投稿者がすでにそれらのほとんどを解決したので、プッシュされる前に分岐が、潜在的な競合の数が最小化され、その結果、マスターにリベースされることをです。