2011-10-20 1 views
12

私はALMレンジャーズの分岐指導から「標準」分岐パターンで作成したチームプロジェクトを持っています。つまり、「サービスパック」ブランチは必要ありません。階層の中央からブランチを削除する方法はありますか。</p> <p><img src="https://i.stack.imgur.com/L3496.png" alt="Standard Branch Hierarchy"></p> <p>は、それを作成した後、私はだけは本当に 『基本』パターンを必要なことがわかった:

「サービスパック」ブランチを削除し、階層内の「リリース」が「メイン」になるように階層を「修復」する方法はありますか?現在、「Service Pack」階層にあるすべてのチェンジセットには、「Service Pack」が途中であったため、「Release」階層に対応するチェンジセットがあります。

+3

なぜ世界で誰がこの質問をd​​ownvoteしますか? –

答えて

1

最も簡単な解決策は、削除または改竄しないことです。

サービスパックブランチは、名前の「サービスパックブランチ」です。 「リリース」ブランチを削除し、「サービスパックブランチ」の名前を「リリース」に変更します。

+0

シンプルでエレガントな解答です。 –

5

TFSのブランチは残念なことに昔ながらのものです(Torvaldsに問い合せると "Dinosaur-like"です)。一度作成すると、構造が設定され、変更できないという点でです。 リリースメインの直下にブランチを作成して、新しいリリースブランチからbaseless mergeを実行する必要があります。私は/nopromptパラメータをmergeコマンドに使用して、 "Resolve Conflicts"ダイアログが表示されるのを止めるべきだと思います。

これは、TFSがどの祖先を使用するのかわからないため、実際に必要以上に競合が発生します。しかし、元のリリースブランチからすべてを取得したいので、コマンドtf resolve /recursive /auto:TakeTheirsを使用して、ソースブランチで常に変更を行うようにTFSに指示することができます。

その後、古いブランチツリーを削除することができます。

複雑ですが、不可能ではありません。

+1

/discardパラメーターを基底のマージで使用すると、競合が発生せず、どちらの側でもコードが変更されません。 –

2

以下は

tf merge /baseless /recursive /noprompt /discard $/TFS/Path/To/Release $/TFS/Path/To/Main 

その後、同様のシナリオで私のために働い:

  • 削除 "サービスパック" ブランチ
  • チェックインの "メイン" と "サービスパック"

"Release"から "Main"への通常のGUIマージを行うことができます

注:すでに多くの人が言及しているように、虐待された場合には、後で宝石の中であなたを噛むことができる根拠のない合併に注意してください。

3

まあ、私はTFSの古いバージョンについては知らないが、少なくともTFS2012/VS2013に、あなたが行うことができます:

  1. A根拠がメインからマージ - >リリース
  2. Source Control Explorer>Branching and Merging>Reparentメイン(新しい親)

完了!

+0

時々ウィザードウィンドウには、可能な親をロードするのに時間がかかります – RMalke

関連する問題

 関連する問題