【发布时间】:2012-06-10 11:41:46
【问题描述】:
我们使用 TFS 2010 并拥有三个分支:Dev -> QA -> Production。
在这个特定示例中,我们决定将方法参数类型和名称从“Guid reportGuid”更改为“int reportId”。我们在 QA 分支中进行了此更改并将其签入。现在我正尝试将此更改从 QA 拉到 Dev 分支。通常它是在相反的方向完成的,但在这种特殊情况下,我们做了我们所做的。 Here 是合并工具的截图。正如您从屏幕截图中看到的那样,在 Dev 分支中对文件的最后一次签入获得了变更集编号 30282 和 QA - 31002(比 30282 更新)。至于我,很明显新的变化应该覆盖旧的变化。但是 TFS 合并的作用恰恰相反。它将 Dev 分支 (30282) 中的旧代码应用于 QA 分支 (31002) 中的新代码,结果没有得到更改。
有人能解释一下为什么 TFS 合并会这样吗? 提前致谢。
【问题讨论】:
-
您上传图片的链接无效。
-
谢谢,雅各布。我更新了图片链接。
-
需要注意的是,图中的工具不是三向合并工具。可能有点不直观,一个三向合并工具will show four windows of text, as with kdiff3 -- 1.) “你的” 2.) 他们的 3.) 1. & 2. 和 4.) 你的共享父级'现在正在编辑。
-
@ruffin 不。它绝对是一个三向合并工具。无论该工具对祖先使用单独的窗口,对合并输出使用另一个窗口,还是将它们组合起来,算法都是相同的。两个文件的毫无根据的合并无法识别更改。
-
@EdwardThomson:我们显然同意你最后一点的真理。如果您说 CS31002 反映了共同的祖先,而 30282 是蓝色的以反映变化,那很好。但是,如果 31002 和 30282 both 与祖先不同,它会显示什么?我的意思仅限于说您无法通过查看工具的图片来推断关系。如果您希望将我的评论修改为“奇怪的是,图中的工具没有描述 3.) 共享父项 以允许用户确认其三向合并”,这很公平。 ;^) 没有颜色,它基本上描绘了一个毫无根据的合并。