为什么TFS中所有文件都标有“合并”?

时间:2009-06-25 16:14:36

标签: tfs merge tfs-power-tools

我正在将我的开发分支合并到主分支中。我在开发分支中只更改了一部分文件,所有其他文件应保持不变。从逻辑上讲,我只想合并我已经更改过的文件。我不会检查我没有更改的文件。

但是当我在TFS中执行合并操作时,它会使用更改类型“merge”标记树中的每个文件。看起来我必须检查整个源代码树中的每个文件!我真的不想这样做,因为这样就无法查看变更集,看看我在项目中实际更改了哪些文件。

起初,我以为我可以使用tfpt.exe Undo Unchanged命令撤消所有“合并”更改,但这不会撤消这些更改。

有人对此有任何想法吗?感谢。

3 个答案:

答案 0 :(得分:10)

这也发生在无基础合并上。当TFS在您正在合并的分支之间没有现有的合并关系时,就会发生无基础合并。因此,它会考虑每个文件' new'在两个分支机构中,所以它合并了#39;每个文件。

要创建合并关系,以便将来合并只列出您实际更改过的文件,您需要对所有更改进行无基本合并,直到指定版本,以便TFS知道共同基线应该是什么是。你应该在之后合并这些更改 - 现在纠正这个分支的基线为时已晚。

如果您实际上并不想从其他分支机构进行任何更改,但只是告诉TFS这些版本在逻辑上属于同一版本,您可以进行合并'给予信用'对于变更集:tf merge /discard

答案 1 :(得分:7)

有许多可能的原因。这不是一个完整的清单:

  • 您在。的父文件夹上执行了命名空间操作(删除,取消删除,重命名) 标有“merge”的文件
  • 您执行了已在目标分支中执行的命名空间操作(删除,取消删除,重命名)
  • 您执行了一系列命名空间操作,这些操作折叠为无操作(例如删除+取消删除,或重命名 - >> b - > a)
  • 有未解决的冲突
  • 您执行弃牌

注意:所有这些同样适用于2005& 2008。

答案 2 :(得分:1)

在Visual Studio 2008和TFS 2008中,不会发生这种情况。只有已更改的文件才会标记为合并。如果您对分支和主干之间的文件进行比较是否有任何更改?诸如编码之类的更改仍会使TFS合并此文件。