2009-04-23 85 views
22

这个问题是合并前一个问题的衍生物:How to version resources that are shared across projects如何分支和TFS

我有一个包含由许多其他项目消耗代码的项目。具体而言,此父项目中的一个文件夹已分支到相关的子项目。

我们之后对父项目进行了更改并将它们签入。在源代码管理资源管理器中,右键单击父项目中的分支文件夹,然后选择“合并”,打算将更改推送到依赖项目。我选择子项目作为目的地,然后选择“最新版本”。该向导通知我“没有合并的更改”。

从我的角度来看,这是不正确的,因为最近更新的文件明显不同。

对TFS中的合并过程有一个根本性的误解吗?我需要做什么改变?

回答

17

TFS合并引擎几乎完全依赖于历史记录,而不是文件内容。这对于非常大的树木来说很有效率,并且可以灵活地执行安全樱桃采摘变更等任务 - 但它也使得回答您的问题变得困难。

的第一步是要了解诊断命令TF历史,TF合并,和TF合并/候选。这里有一个很好的介绍:http://blogs.msdn.com/dstfs/archive/2009/04/15/a-note-on-merging-and-the-use-of-tf-merges-tf-merge.aspx

如果你是新来的分支&合并在TFS那么你的历史可能不是很复杂。我认为很可能你会通过一个简短的电话来合并。但是,在一般情况下,追溯合并历史记录可能会变得非常复杂,因此如果您遇到问题,请随时回复更多详细信息。

2

转到您的“父”项目中已知更改的一个特定文件。尝试合并该文件。不要检查任何东西;只是看看会发生什么。

需要注意的一点:合并工具将不包括分支后添加的文件。在合并任何进一步的更改之前,您必须明确地分支新文件。如果在不使用分支操作的情况下将文件添加到父文件夹和子文件夹,则合并工具不会将它们视为同一文件的版本(并且无法合并它们之间的更改)。

+0

更正: *新添加的文件与其他分支没有合并关系,直到它们本身branches = TRUE。 (注意:可以是“分支,删除”) *解决方法是合并特定文件= FALSE。将无法工作。正确的答案是合并一个有亲缘关系的父母。 *并行添加到两个分支的文件不会合并= 2008年修复。请参阅http://blogs.msdn.com/tfsvcs/archive/2007/05/22/orcas-merge-enhancements中的#1-2。 aspx - 但请注意,如果内容不匹配,则会陷入没有“基本”信息的版本冲突;合并将是一个痛苦。 – 2009-06-11 23:22:02