如何在 TFS 中分支和合并
Posted
技术标签:
【中文标题】如何在 TFS 中分支和合并【英文标题】:How to branch and merge in TFS 【发布时间】:2010-10-21 11:39:05 【问题描述】:这个问题是上一个问题的衍生问题:How to version resources that are shared across projects
我有一个项目,其中包含许多其他项目使用的代码。具体来说,此父项目中的一个文件夹已分支到依赖的子项目。
我们已经在父项目中进行了更改并将它们签入。在源代码管理资源管理器中,我右键单击父项目中的分支文件夹并选择“合并”,打算将更改推送到依赖项目。我选择子项目作为目标,然后选择“最新版本”。向导通知我“没有要合并的更改”。
在我看来,这不是真的,因为最近更新的文件明显不同。
这里对 TFS 中的合并过程有根本的误解吗?我需要做些什么不同的事情?
【问题讨论】:
【参考方案1】:TFS 合并引擎几乎完全依赖于历史记录,而不是文件内容。这使得它对于非常大的树很有效,并且对于像安全地挑选变化这样的任务很灵活——但它也使得回答你的问题变得困难。
第一步是了解诊断命令tf history、tf merges和tf merge /candidate。这里有一个很好的介绍:http://blogs.msdn.com/dstfs/archive/2009/04/15/a-note-on-merging-and-the-use-of-tf-merges-tf-merge.aspx
如果您不熟悉 TFS 中的分支和合并,那么您的历史可能不是很复杂。我认为您可能会通过快速调用 tf merges 找到答案。但是,在一般情况下,跟踪合并历史可能会变得非常复杂,因此如果您遇到问题,请随时回复更多详细信息。
【讨论】:
【参考方案2】:转到您知道“父”项目中已更改的特定文件。尝试仅合并该文件。不要检查任何东西;看看会发生什么。
注意事项:合并工具不会包含分支后添加的文件。您必须明确分支新文件,然后才能合并任何进一步的更改。如果将文件添加到父文件夹和子文件夹而不使用分支操作,则合并工具不会将它们视为同一文件的版本(并且您无法合并它们之间的更改)。
【讨论】:
更正: * 新添加的文件与其他分支没有合并关系,直到它们自己分支 = TRUE。 (注意:可以是“分支,删除”) * 解决方法是合并特定文件 = FALSE。不会工作。正确的答案是合并一个确实有关系的父级。 * 并行添加到两个分支的文件不会合并 = 2008 年修复。请参阅blogs.msdn.com/tfsvcs/archive/2007/05/22/… 中的 #1-2 - 但请注意,如果内容不匹配,您将陷入没有“基础”的版本冲突“信息;合并会很痛苦。以上是关于如何在 TFS 中分支和合并的主要内容,如果未能解决你的问题,请参考以下文章