TFS baseless 合并 - 删除和重新创建的目标分支和 baseless 合并不再有效

TFS baseless merges - deleted and recreated target branch and baseless merge no longer works

根据以下需要,我的源代码管理中有以下分支:
我们有多个环境,但在这种情况下,重要的是测试和生产环境。我们有多个并发项目,需要由不同的团队开发,并在准备就绪后在单个测试环境中进行测试。当它们准备就绪时,可以将它们推向生产(根据需要在集成环境中进行额外测试)。我们无法将功能组织到专用版本中 - 它们需要按照业务需要发布。

所以我们在结构方面确定的是每个环境的分支加上功能分支,我们只是接受我们将执行无基础合并到测试分支。没什么大不了的,因为我们可以通过 UI.

将特定的变更集合并到测试中

$/Benefits/Source/Main - 我们进行生产的主干 and/or 集成部署
$/Benefits/Source/Test - 我们将功能合并到其中进行初步测试的分支
$/Benefits/Source/Dev/LURE-7 - 从主干分支
$/Benefits/Source/Dev/[其他功能] - 从主干分支

我有一个功能分支已成功合并到测试并经过测试。不幸的是,测试分支被几次合并搞得一团糟,我们决定简单地删除并重新创建测试分支是最好的方法。我们删除了 Test 分支并从 Trunk 重新创建它。

我现在需要将我的功能分支重新合并到测试中,我的功能分支似乎保留了其无根据合并的历史记录,并认为我的更改已经在目标分支中。我已确认特定文件更改不在其中。

基本上发生了什么,当我在合并向导的第一页 select "specific changesets" 时,下一页不显示任何比原始分支更新的变更集。

我的feature分支的历史,查看分支后的变化:

合并向导第 1 页:

向导的第 2 页,它没有看到分支后的 2 个变更集:

我的Test分支的历史记录,你可以看到它被删除并重新创建:

(6/27 我合并了我的功能分支,7/5 我删除并重新创建了测试分支)

当你在 TFS 中删除一个分支时,它真的还在那里,只是隐藏了。如果您创建一个具有相同名称/位置的新分支,那么 TFS 将取消删除旧分支。

最好的方法是

  1. 使用新名称/位置创建新分支。如果您想保留旧的已删除分支的历史记录,请执行此操作
  2. 从命令行使用 tf destroy。如果历史不重要,请使用它。 小心这个命令。一旦它消失了,恢复它的唯一方法是从您的 TFS 数据库备份。