私の同僚は、ビルドに失敗したコミットを元に戻すためにCIサーバーを作成することを考えていると言ったので、(少なくともビルドを渡す場合のようHEAD
にmaster
)常に安定しています。
これはベストプラクティスmaster
ですか、それとも開発者が修正するまで壊れたままにしておくよりも問題がある可能性がありますか?
私の考えでは、コミットを元に戻すと、コミットと修正を読み直すタスクがより複雑になります(開発者は元に戻して修正をコミットする必要がありますが、これも混乱しますgit log
)。修正。master
安定していることにはいくつかの利点がありますが、失敗したコミットを元に戻すことは私を納得させません。
編集:それがmaster
他の開発ブランチであるかどうかは関係ありませんが、質問は同じままです:ビルドに失敗したコミットをCIシステムが元に戻す必要がありますか?
別の(長い)編集:わかりgit
ました、奇妙な方法で使用しています。ブランチにコミットすると他の開発者とその変更から隔離され、ブランチを再統合して競合の可能性に対処する必要があるため、ブランチの概念は実際のCIに反すると信じています。全員がmaster
この競合にコミットすると、最小限に抑えられ、すべてのコミットがすべてのテストに合格します。
もちろん、これにより、安定性のみをプッシュする(またはビルドを中断する)ことを強制し、後方互換性を壊さないように、または新しい機能を導入するときに機能を切り替えないように、より慎重にプログラムします。
CIをこのように、またはそのように行う場合、トレードオフがありますが、それは質問の範囲外です(これに関する関連する質問を参照)。ご希望であれば、質問を言い換えることができます。開発者の小さなチームが機能ブランチで協力しています。1人の開発者がそのブランチのビルドを中断する何かをコミットした場合、CIシステムはコミットを元に戻すべきですか?
master
、最初から到達することはありません。それが開発と機能のブランチの使用目的です。これらの変更は統合ブランチのようなもので行われ、そこで複数の開発者のすべての新機能が連携して動作するかどうかをテストできます。または、少なくともそれが1つの可能なワークフローです。