TFS 2010: 分支 - 为什么变更集显示它们没有合并,即使它们是在分支之前提交的?

7
我创建了一个分支,第一次从源代码合并到分支时,有很多旧的变更集出现,提示说它们没有被合并,但是这些变更在分支之前就存在了,我可以确认它们已经在目标分支中。
例如:当源代码中有9个变更集时,我从源代码创建了一个名为Target的分支。在源代码中进行了第10次变更。当我尝试从源代码合并到Target时,TFS告诉我需要合并第6和7次变更以及第10次变更(即使第6和7次变更在我创建分支之前就存在,并且我可以确认这些变更已经在Target中)。
我对TFS还不熟悉,这种情况发生在我刚开始实施分支和合并时。我创建的最新分支没有出现这种情况。
现在我们有一个主干,然后有1个分支用于进行下一个发布版本的QA测试,另一个分支用于生产热修复。这个问题出现在QA分支上,但是当我创建热修复分支时,就没有出现这个问题。
2个回答

7
我已经遇到过这种情况。最终,我只是将源代码中的“流氓”候选更改集合并到目标代码中。我检查了待合并的内容,并确定没有任何更改。提交合并后,这些候选更改集就被清除了。我认为如果不行的话,我可以回滚。
编辑:看起来如果你升级到TFS 2010,会出现一个错误,导致额外的合并候选项(参见http://support.microsoft.com/kb/2135068
至于解决方法,支持文章说:
"为解决额外合并候选项的问题,应使用/discard选项。为此,请从命令行运行以下格式的合并:" tf merge <source branch> <target branch> /r /discard:CXXX~CYYY 在这个示例中,XXXYYY表示要丢弃的更改范围的变更集ID。在此合并被检入之后,不想要的候选项将不再出现在未来的合并中。还要注意,在TFS 2010中合并算法的改进,源分支和目标分支中都删除的项目将导致需要合并的更改。在这些情况下,最好不要丢弃更改集,以便正确更新合并历史记录。

0
我也遇到过这种情况。我怀疑问题出在TFS管理挂起合并的方式上。如果你尝试合并这些更改,而且变更类型只是“合并”而不是“合并,编辑”,那么合并它们是安全的,并且可以确信没有任何更改发生。如果你不合并它们,TFS将无限期地尝试合并非更改内容,可能会最终掩盖真正的更改。我建议尽快合并这些非更改内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接