我们有一个TFS2010主干线和几个分支机构。
我试图将trunk和branch1置于一个状态,当没有更多的更改时,从trunk到branch1合并,签入然后从branch1合并到trunk并签入。
然而,在那之后,如果我试图看看是否还有任何可能合并的方式TFS继续向我展示大约15个需要合并的文件。执行合并后,文件无法在文件系统上找到,但TFS仍然确定要合并这15个文件。
我经常多次将一个合并到另一个中,反之亦然,但似乎没有什么能解决它。而且我不是我们团队中第一个遇到此错误/功能的人。
可能我错过了一些明显的东西吗?任何想法为什么TFS表现得如此古怪?有没有办法结束这种无休止的无意义合并的无政府状态?答案 0 :(得分:1)
我可以想到几个可能性:
1)(原谅我说明显而易见)合并时,更改是在工作区本地进行的,并且不会提交给TFS数据库。合并完成后,您需要检查更改,然后才能将这些更改反映在TFS中,并且(希望)从“仍待合并的内容”列表中消失。
2)你有多个工作区吗? (例如,我曾尝试使用正常的Dev工作区作为主干,以及一个特殊的合并工作空间,映射在主干和分支中)
如果合并到一个工作区,则合并的文件将仅显示在该工作区的挂起更改中。请注意,Source Control资源管理器和Pending Chnages窗口都有自己的Workspace下拉列表,如果您在SC资源管理器中切换工作区(进行合并),您的待处理更改将不会被切换,因此将会查找在不同的工作区。这个让我抓了几次(“我已经完成了合并,但是TFS没有改变任何文件。发生了什么事情?!”)
3)有时TFS似乎感到困惑并且行为不规律。随着TFS的每个新版本的显着改善,但在2010年偶尔会发生这种情况。(这不是你想听的答案,我知道: - )
答案 1 :(得分:0)
杰森强调的精彩简报之外的一个案例。
您之前是否在main或branch1中的变更集上使用了tf.exe回滚 / keepmergehistory [1] 命令?在此处阅读有关tf.exe rollback命令的更多信息http://geekswithblogs.net/TarunArora/archive/2011/06/27/how-to-undo-a-changeset-using-tf.exe-rollback.aspx
[1] - 如果您希望将来在同一源和同一目标之间进行合并以排除您正在回滚的更改,请指定此选项。
如果是这样,您可以使用tf.exe merge / force http://msdn.microsoft.com/en-us/library/bd6dxhfy(v=VS.100).aspx强制两个分支之间的合并。但请确保在合并后签入(合并后发生冲突,除非您解决冲突并签入,更改仍保持签出),如果您在合并到分支后执行查看历史记录,则可以查看新的变更集,验证变更集详细信息以确保合并正确进行。
答案 2 :(得分:0)
当您更改了两个分支中的文件并来回合并时,TFS并不总是(我仍然没有找到何时和为什么)更新文件的共同祖先,使它认为它们仍然都被更改
为了解决这个问题,我一直只是执行合并,并且一旦我知道源和目标分支已经相同,就选择“Take source branch”来解决冲突。
如果有人有一个很好的解释,为什么会发生这种情况,我会很高兴听到它......