内部Webアプリケーションのcodeplexの分岐ガイドで概説されている基本的な分岐計画でTFS2010を使用しています。Dev、Main(QA / Testing)、Release(Production)の3つの基本的なブランチがあります。
アプリは内部Webアプリケーションであるため、単一の製品リリースのみをサポートします。
基本的にローカルで開発し、タスク(バグ修正または拡張)を完了したら、それをDevにコミットします。また、他の開発者がチェックインしたものをすべてプルダウンする作業を開始するときは、通常、毎日Devから最新情報を取得します。一定期間(通常は1〜2週間)後、QAサイトの更新を正当化するのに十分な変更があり、すべてを開発からメインにマージしてから、マージされたメインブランチをテストのためにQAサーバーにデプロイすることを決定します。
次に、QAはサイトのテストを開始し、満足したら、メインからリリースまですべてマージを実行し、マージされたリリースブランチを本番サーバーにデプロイします。リリースまでのすべてを実際にマージする前に、複数のDevからMainへのマージを実行することさえあります。
とにかく、私たちはこの戦略を2か月間使用してきましたが、最近まですべてが素晴らしく見えました。本番環境で重大な問題が発生した場合は、リリースを修正プログラムで修正し、それを逆方向にマージすることができました。すべてがよさそうだった。
それから私達は私達が対処する方法を知らなかった何かに出くわしました。MainからReleaseまでの1つのコード修正のみをマージするという指示が与えられました(Mainの他のすべてをマージすることはありません)。これが来るとは知らなかったので、元のチェンジセットがDevからMainにマージされたときに、他のいくつかのチェンジセットと一緒にマージされました。そのため、メインからリリースにマージする場合、マージされたチャンセット全体を選択するしかありませんでした。マージされたチェンジセットに「ドリルダウン」して、本当に必要なDevからの元のチェンジセットを1つだけ選択することはできませんでした。
リリースの修正プログラムのように、変更を手動で適用して、そこに適用することにしました。しかし今、私はあなたがこのような状況をどのように防ぐかを理解しようとしています。
マージ戦略に関するいくつかの記事を読みましたが、マージするときにチェンジセットを厳選するのではなく、利用可能なすべてのものを単純にマージすることをお勧めしているようです...これは理にかなっています...しかし、常に複数のチェンジセットをマージする場合(そしてそれらが1つになる場合)宛先ブランチのチェンジセット)では、必要に応じて、元のチェンジセットの1つだけを本番環境にマージするにはどうすればよいでしょうか。
たとえば、Dev(C1、C2、C3)をMain(C4になる)にマージする場合、C4内のC1のみをリリースまでマージするにはどうすればよいですか?
一度に複数のチェンジセットを行うのではなく、すべてのチェンジセットをDevからMainに個別にマージする方がよいと思います。少なくとも、必要に応じて、メインからリリースに簡単に移行できます。
推奨事項/ライフレッスンなど。この特定のシナリオの分岐/マージの処理についていただければ幸いです。