我使用ALM Rangers的分支指南中的“标准”分支模式创建了一个团队项目:
创建之后,我发现我只需要“基本”模式。也就是说,我不需要“Service Pack”分支。
有没有办法让我删除“Service Pack”分支并“修复”层次结构,以便“Release”位于层次结构中的“Main”下?现在,“Service Pack”层次结构中的每个变更集在“Release”层次结构中都有一个相应的变更集,因为“Service Pack”一直在阻碍。
答案 0 :(得分:5)
不幸的是,TFS中的分支是老式的(或者,如果你问Torvalds,则是“恐龙式”;)在创建之后,结构已设置且无法更改。我相信您必须在 Main 的正下方创建一个新的发布分支,然后从旧的Release分支执行baseless merge到新的分支。我认为你应该使用/noprompt
参数来合并命令来停止显示“解决冲突”对话框。
这会给你带来比真正需要更多的冲突,因为TFS不知道要使用什么祖先。但是,由于您希望从原始Release分支中获取所有内容,因此可以使用命令tf resolve /recursive /auto:TakeTheirs
告诉TFS始终在源分支中进行更改。
之后,您应该能够删除旧的分支树。
复杂但并非不可能。
答案 1 :(得分:3)
我不知道TFS
的旧版本,但至少在TFS2012
/ VS2013
,您可以这样做:
Source Control Explorer
> Branching and Merging
> Reparent
,选择主要(新的父级)完成!
答案 2 :(得分:2)
以下在类似场景中为我工作
tf merge /baseless /recursive /noprompt /discard $/TFS/Path/To/Release $/TFS/Path/To/Main
然后:
现在你可以从"发布"进行正常的GUI合并。到" Main"
注意:正如许多人已经提到过的那样,小心无基础的合并,他们可以在遭受滥用的时候咬你的珠宝。
答案 3 :(得分:1)
最简单的解决方案是不删除或重新显示。
Service Pack分支仅是名称中的“Service Pack分支”。删除“release”分支并将“service pack branch”重命名为“release”。