【问题标题】:How to merge in TFS when a file has been moved?移动文件后如何在 TFS 中合并?
【发布时间】:2013-08-01 09:31:24
【问题描述】:

这是我们的情况: 在 TFS 2010 中,我们有主开发分支和发布分支。 在某些时候,决定某些代码位于名称不佳的目录中,因此在 TFS 中对其进行了重命名(仅在主分支上,因为它不是错误文件)。 我现在已经在 dev 分支上修复了这个移动代码中的一个错误,并希望将修复合并到发布分支中。

但是,当我这样做时,它不是对文件执行合并,而是在新位置创建文件的副本并将更改标记为“合并,分支”。

我做错了什么还是这是 TFS 的“功能”?

更新:我刚刚重新访问了这篇文章并重试了。重现错误的步骤是:

  1. 我在 Main/Desktop/UserControls 中有一个文件 (control.cs) 和 发布/V5/Desktop/UserControls。
  2. 使用源代码管理资源管理器我将 UserControls“移动”到 UserControls2 并签入(我还尝试使用 结果相同)
  3. 我在 Main 上编辑 control.cs 并签入。
  4. 我将 Main 合并到 Releases/V5 中(注意我合并的是整个分支,而不仅仅是 UserControls)
  5. 我现在在 Releases/V5/Desktop/UserControls2 中看到修改后的 control.cs,在 Releases/V5/Desktop/UserControls 中看到旧的 control.cs

【问题讨论】:

  • 你能检查一下更新后的答案吗?

标签: tfs merge


【解决方案1】:

我早些时候回答了这个问题,假设你有 DEV 分支,并且在我按照你上面解释的内容对 TFS 进行了更多研究之后,我有更多的投入。

这就是我所做的,我有一个名为 Main 的 Source 分支,我从 Main 分支称为 Release。在 Main 中,我有两个文件夹(f1 和 F2),我将文件夹 F2 重命名为 F3 并签入更改。然后在 F2(现在的 F3)中编辑文件 File1 并对内容进行了一些更改,签入更改。

现在我将 Main 合并到 Release 并且每个更改都已正确合并。在 Release 中,文件夹 F2 被重命名为 F3,并且 file1 也被合并到了正确的文件夹中。

更改应显示为合并、文件夹重命名和文件编辑。

一切都像一个魅力。我也在使用 TFS2010。如果您做了与我刚才解释的不同的事情,请告诉我吗?我错过了什么吗?

更新:

我测试了您上面提到的确切场景,即使在源分支中的移动/重命名之后,它也会正确合并 control.cs 文件。我相信在您的情况下 - 在 Release 分支中,有人重新创建(删除并再次添加)Usercontrols 文件夹和/或 Usercontrol.cs 文件,因此 TFS 无法识别其与源分支相同的文件/文件夹,因此它不是正确合并。

你能检查一下发布分支中 Usercontrol 文件的历史来确认吗?

添加一些我的测试截图:

【讨论】:

  • 您好以赛亚,感谢您的回复。虽然它有点令人困惑。我认为您正在描述一个系统,其中有一个单独的 Dev 分支,而我们只是在 Main 上进行开发。不过,如果我没看错的话,步骤 1-5 包括让 Dev 和 Main 与新文件夹中的新错误修复同步。好吧,我不用担心这个。但是,当第 6 步完成后,合并不会将错误修复应用到 Release 中的文件,而是会在新位置创建一个副本。
  • 如果你的文件是正确分支的,tfs 应该解决以赛亚描述的变化轨迹。另一个分支的存在与此无关。我可能的情况是,文件/文件夹在发布时和主文件中分别创建了 2 次 - 这会破坏正确的分支,因为 tfs 将它们视为完全不同的项目。
  • 我所做的与 Isiah 修改后的答案唯一不同的是文件夹重命名和文件修改是单独合并的,而不是一次合并。如果某个目录是在某个时候单独创建的,而不是按照 drk 的建议正确合并,我创建了一个新的测试目录并重新创建了问题。我得出的结论是,这是 tfs tbh 中的一个缺陷,而不是我的错误。谢谢你们的帮助。
  • 所以你重命名了主分支中的文件夹,然后编辑了文件。签入这两项更改。然后您尝试合并从 Main 到 Release 的更改?你能按照你做的顺序列出这些步骤吗?
  • @Isaiah4110 感谢您查看此内容,很抱歉我没有看到您的上一篇文章——我已经放弃了。我现在重新测试并添加了重现的确切步骤。
猜你喜欢
  • 2016-06-09
  • 2014-04-22
  • 2020-05-18
  • 2017-03-25
  • 1970-01-01
  • 2013-05-30
  • 2014-08-08
  • 1970-01-01
  • 2010-09-14
相关资源
最近更新 更多