如何从层次结构中删除分支?

时间:2011-10-20 02:03:52

标签: tfs tfs2010 branch

我使用ALM Rangers的分支指南中的“标准”分支模式创建了一个团队项目:

Standard Branch Hierarchy

创建之后,我发现我只需要“基本”模式。也就是说,我不需要“Service Pack”分支。

有没有办法让我删除“Service Pack”分支并“修复”层次结构,以便“Release”位于层次结构中的“Main”下?现在,“Service Pack”层次结构中的每个变更集在“Release”层次结构中都有一个相应的变更集,因为“Service Pack”一直在阻碍。

4 个答案:

答案 0 :(得分:5)

不幸的是,TFS中的分支是老式的(或者,如果你问Torvalds,则是“恐龙式”;)在创建之后,结构已设置且无法更改。我相信您必须在 Main 的正下方创建一个新的发布分支,然后从旧的Release分支执行baseless merge到新的分支。我认为你应该使用/noprompt参数来合并命令来停止显示“解决冲突”对话框。

这会给你带来比真正需要更多的冲突,因为TFS不知道要使用什么祖先。但是,由于您希望从原始Release分支中获取所有内容,因此可以使用命令tf resolve /recursive /auto:TakeTheirs告诉TFS始终在源分支中进行更改。

之后,您应该能够删除旧的分支树。

复杂但并非不可能。

答案 1 :(得分:3)

我不知道TFS的旧版本,但至少在TFS2012 / VS2013,您可以这样做:

  1. 来自主要的无基础合并 - >的推出
  2. Source Control Explorer> Branching and Merging> Reparent,选择主要(新的父级)
  3. 完成!

答案 2 :(得分:2)

以下在类似场景中为我工作

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

然后:

  • 删除" Service Pack"分支
  • 办理登机手续" Main"和" Service Pack"

现在你可以从"发布"进行正常的GUI合并。到" Main"

注意:正如许多人已经提到过的那样,小心无基础的合并,他们可以在遭受滥用的时候咬你的珠宝。

答案 3 :(得分:1)

最简单的解决方案是不删除或重新显示。

Service Pack分支仅是名称中的“Service Pack分支”。删除“release”分支并将“service pack branch”重命名为“release”。