此问题是上一个问题的衍生产品:How to version resources that are shared across projects
我有一个项目,其中包含许多其他项目使用的代码。具体来说,此父项目中的一个文件夹已分支到从属子项目。
我们已经在父项目中进行了更改并将其签入。在Source Control Explorer中,我右键单击父项目中的分支文件夹,然后选择“Merge”,打算将更改推送到依赖项目。我选择子项目作为目的地,然后选择“最新版本”。该向导通知我“合并没有变化”。
从我的角度来看,情况并非如此,因为最近更新的文件明显不同。
TFS中的合并过程是否存在根本的误解?我需要做些什么不同的事情?
答案 0 :(得分:17)
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 找到答案。但是,在一般情况下,跟踪合并历史记录可能会变得非常复杂,因此如果您遇到问题,请随时回复更多详细信息。
答案 1 :(得分:2)
转到您在“父”项目中更改的一个特定文件。尝试合并该文件。不要检查任何东西;看看会发生什么。
需要注意的事项:合并工具不包含分支后添加的文件。在合并任何进一步的更改之前,必须显式分支新文件。如果在不使用分支操作的情况下将文件添加到父文件夹和子文件夹,则合并工具不会将它们视为同一文件的版本(并且您无法合并它们之间的更改)。