9

リリースブランチ(RB、C5から開始)とトランク上のチェンジセット(C10)があり、これらをRBにマージします。

ファイルには、C3(両方に共通)、RB上のCS 7、C9(トランク)に1つ、C10に1つ変更があります。したがって、変更したファイルの履歴は次のようになります。

    RB:       C5 -> C7
Trunk: C3 ->             C9 -> C10

C10 | C3 | C7C10をトランクからRBにマージすると、C3が共通の祖先リビジョンであり、C10とC7がそれぞれ2つのブランチの先端であるため、マージウィンドウが表示されると思い ます。ただし、マージツールで表示されますC10 | C9 | C7

私のマージツールはを表示するように構成されて%1(OriginalFile)|%3(BaseFile)|%2(Modified File)いるので、TFSがベースリビジョンとしてC9を選択したことがわかります。

これはまったく予想外のことであり、MercurialやGitでのマージに使用されている方法とはまったく逆です。何か問題が発生したのでしょうか、それともTFSがマージで私を狂わせようとしているのでしょうか。

これはデフォルトのTFSマージ動作ですか?もしそうなら、なぜ彼らがそれをこのように実装することを選んだのかについての洞察を提供できますか?

クライアントとしてVS2010でTFS2008を使用しています。

4

3 に答える 3

13

TFSのブランチとマージ(開発、統合、メインブランチがあります)に関して、同様の初期の苦労がありました。

短いバージョンでは、チップから共通の祖先に直接マージすることはできません。

したがって、C3がC5に分岐した場合、C7はC9に分岐しました。このツールが提供するものは、TFSの動作のコンテキスト内で意味があります。基本的に、C10 / C9からC7に移動し、次にC7からC3に移動する必要があります。

より具体的な例で別の言い方をすると、プロジェクトでマルチレベルの分岐とマージを処理する方法を次に示します。

トランク/メインから始めます。

次に、統合ブランチに分岐します。

次に(そしてこれが重要です)、統合から個々の開発ブランチに分岐して、次のリリースに取り組むことができるようにします。

devブランチで変更が完了すると、最初に統合からdevブランチにマージして逆統合します(したがって、他のすべての変更を取得します)。次に、個々の開発ブランチから共有統合ブランチに移動して、統合を進めます。

統合がQAに合格したら、トランクを統合にマージして逆統合し(メインにホットフィックスがある場合に備えて)、統合で結合されたすべての変更をメインに順統合します。

リリース日に、メインから新しいリリースブランチへの最後のブランチを実行し、それをデプロイします。

基本的に、TFSでは、分岐/マージツリーを幹から手足、分岐から葉へと常に上下に移動する必要があります。分岐階層のどのステップもバイパスすることはできません。

比喩的に言えば、TFSの分岐とマージは、ナマケモノが木を這い上がり、枝の間を飛び回るサルと比べて、グリップを失うことなくゆっくりと枝の終わりまで下がるようなものです;)

慣れるのに少し時間がかかりますが、一度(特にフォワード統合/リバース統合パラダイムに慣れると)、特に複数の人が開発を行っていて、全員の変更をまとめる必要がある場合は、うまくいきます物事を踏みにじることなく。

お役に立てば幸いです。

于 2011-02-24T10:51:11.000 に答える
0

以前このサイトを見回していて、このページに出くわしましたが、これは役に立ちますか?

TFSで分岐してマージする方法

于 2011-02-21T20:14:12.230 に答える
0

あなたが説明することは完全に可能であり、それは私にとってはうまくいくので、あなたは間違ったマージ方法を持っているかもしれないと思います。ただし、メインブランチから分岐を開始するときは、適切なRI(逆統合)とFI(順統合)を実行することを常に覚えておく必要があります。分岐のガイドラインとベストプラクティスについては、codeplexを検索してください。

基本的に、メインブランチにドロップバックされた変更は、マージして戻す前に、他のブランチにRIで戻す必要があります。これはベストプラクティスであり、毎回機能します。その後、ブランチからメイントランクに戻ってFIを続行できます。

于 2011-02-24T10:34:53.883 に答える