合并重命名文件夹时SVN树冲突

plw*_*h88 10 svn tortoisesvn merge tree-conflict

我正在使用TortoiseSVN将来自trunk的最新更改合并到branch-B中,包括文件夹重命名.

在此之前,我将分支-A重新整合到主干中.在该分支中,已重命名文件夹并对其中的文件进行了更改.Branch-B包含对这些文件的不同修订,但该文件夹仍具有原始名称.

trunk合并到branch-B时,SVN只是将重命名的文件夹添加为new,并在最初命名的文件夹上报告树冲突.文件修订本身永远不会合并,我留下了两个文件夹.我已经尝试了多个选项来获得最干净的合并,同时保留所有适当的svn:mergeinfo,但似乎没有任何效果.

有没有人知道干净地完成这个合并的正确方法?

TortoiseSVN 1.8.10,Subversion 1.8.11

这是一个视觉:

/trunk (before reintegrating branch-A)
  /Folder1
    file1
    file2
    file3

/trunk (after reintegrating branch-A)
  /Folder1-Renamed
    file1-change1
    file2-change1
    file3

/branch-B
  /Folder1
    file1-change2
    file2-change2
    file3
Run Code Online (Sandbox Code Playgroud)

TL; DR:当在其中一个分支中重命名包含文件夹时,如何在两个分支之间干净地合并文件修订?

Mic*_*per 9

在Subversion中没有像这样解决结构树冲突的真正干净的方法.基本上,您需要做的是以下内容:

  • 合并trunkbranch-B工作副本
  • 手工打造的变化的差异file1,并file2branch-B与它们应用到相应的文件,在合并后的新Folder1-Renamed目录
  • 删除现在过时的Folder1目录
  • 确保一切仍然有效
  • 接受当前状态作为正确状态(另请参阅http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html)
  • 承诺

对不起,它比使用svn更容易.我是使用Subversion进行某些类型的团队设置的忠实粉丝,但树冲突的噩梦(以及他们的神秘和容易出错的解决机制)经常让我们想哭(并转而使用git).