为什么TFS中存在Filename冲突

时间:2011-09-21 13:05:47

标签: tfs

我有一个场景,我有一个主分支和一个从主分支获取的dev分支。 master分支包含一些dll的旧版本:我已经在dev分支中更新了。现在,当我尝试将我的更改从我的dev分支合并到主分支时,我得到了“Filname Collision”冲突。当然文件名会发生冲突,我已经更新了文件并希望使用我的新版本。但出于某种原因,我没有把本地作为解决问题的方法。我所能做的就是服务器,重命名服务器或重命名本地服务器。那是为什么?

2 个答案:

答案 0 :(得分:3)

问题在于您替换了DLL而不是“更改”它,因此合并会识别出它是文件系统中一个完全独立的条目并抱怨。

更全面地解释了herehere,包括解决方案:

  

我们无法通过GUI解决此问题,因此我们将转到命令   并适当地解决冲突。我们有决心   能够为目标文件指定新名称 - 您可以找到   所有选项here。我们的选择   将使用AcceptYoursRenameTheirs并在命名空间中冲突它   接受文件的内容和名称(来源)并重命名   (目标)文件到指定的新名称。

     

要完成此操作,我们还需要使用/newname选项。这里   是你应该执行的命令:

tf resolve a.txt  /auto:AcceptYoursRenameTheirs  /newname:a-old.txt
     

此命令成功后,您将收到两个待处理的更改:1)a   合并,将新a.txt分支到目标文件夹中,2)重命名   a.txt中的a-old.txttarget。因此,在检查这些更改后   合并关系将如下所示:source/a.txt à target/a.txt   就像你想要的那样。

     

如果相反,你想要发生相反的事情,这意味着你   需要source/a.txt映射到目标文件夹中的新名称然后   要执行的命令是:

tf resolve a.txt  /auto:AcceptMerge /newname:a-newname.txt
     

因此,这将为您提供source/a.txt -à target/a-newname.txt

的合并关系      

随着冲突的解决,开发人员现在可以自由办理登机手续   这次合并带来的变化。

答案 1 :(得分:1)

如果您在源代码管理中删除二进制文件并稍后添加,则大多数情况会发生这种情况。 所以我认为你正在使用以下工作流程:

  • 删除源代码管理中的当前二进制文件
  • 提交
  • 在源代码管理中添加新的二进制文件
  • 合并 - >文件冲突 由于文件删除操作,tfs无法在文件之间创建关系,也无法提供解决问题的任何解决方案。

我的工作流程看起来像这样(大部分时间都在工作):

  • 在源代码管理中签出当前二进制文件
  • 替换本地文件系统中的二进制文件
  • 提交更改的二进制文件
  • 合并 - >现在应该检测新的二进制版本,现在你应该有你的典型经验