我最近从 Mecurial 迁移到 TFS 2012 以负责源代码控制。到目前为止,我真的很喜欢它,但我只是停留在它的一方面,所以我希望这里有人可以帮助我。
假设我有一个名为“Main”的分支,然后我从中分支出来,称之为“Feature 1”。我可以对“功能 1”进行修改,然后在这一点上 Mecurial 将画出一个岔路口。
如果我随后将“功能 1”更改合并到“主要”中,Mecurial 将在视觉上再次将分叉重新连接起来。然后,我可以对“功能 1”进行更多修改,这将导致另一次分裂,并且 Mecurial 会再次为我提供此情况的视觉表示。
我在TFS中也尝试过,虽然实际的分支和合并很容易,但很难解决的是“Feature 1”中的最新更改是否已合并到“Main”中,或者是否有未完成的更改待合并。
“跟踪变更集”功能即将到来,会让我知道“功能 1”已在某个时刻与“主要”合并,但如果“功能 1”自上次合并以来已被修改,则不会显示。
基本上我要问的是,“我如何判断分支自上次与父级合并以来是否有任何更改?”
也许我只是陷入了 Mecurial 过去做事的方式,但我真的很感谢针对上述问题的一些帮助或指导。
更新:
TFS 中没有视觉指示符,但“TF.exe Merges”命令是您可以获得该特定功能的最接近的命令。 TF.exe 合并 + 跟踪更改集 + 查看历史记录将帮助您实现这一目标。
格式: tf 合并 [源] 目标 [/recursive] [/extended] [/format:(brief|deltailed)] [/login:用户名,[密码]] [/showall]]] [/collection:TeamProjectCollectionUrl]
打开 Visual Studio 命令提示符并输入 tf.exe merge /?了解更多详情。
示例:
tf.exe 合并 /recursive C:\projects\Main C:\projects\Dev
Changeset Merged in Changeset Author Date
> --------------------------------------------------------
135 162 user1 4/13/2013
146 162 User2 5/16/2013
147 167 User1 6/18/2013
当您运行此命令时,您将获得从 MAIN 分支合并到 DEV 分支的最后一个变更集。请注意最后合并的变更集编号(在本例中为 147)。您可以返回Main分支->查看历史记录,检查Main中147之后是否添加了新的变更集。在这种情况下,您将必须进行合并,否则不行。
有道理吗?
还有一件事,我建议强制进行合并的开发人员在合并期间使用特定格式的签入注释,例如
"******MERGE****** Source branch name, the last changeset etc".
这也会有帮助,但不要指望它,因为人们可能不会这样做或会犯错误。
据我所知,没有任何简单的视觉指示器可以显示这一点(尽管如果有的话那就太棒了)。我相信“跟踪变更集”或只是简单的比较是您唯一的选择。
我在没有 CI 的文档存储库 PR 中收到错误
Operation failed: TF401192: The source branch has been modified since the last merge attempt. (409)
。我的分支落后于main
并且冲突检查很旧。解决方案是
这触发了 PR 的合并冲突检查,我能够完成 PR。