移动源代码文件的SVN合并

Jos*_*ess 14 svn merge

我觉得我拥有SVN世界上最简单的用例:

  • 我有一个文件,Test.javatrunkSVN的.
  • 我分支trunkdev-branch.
  • Test.java进入了com/mycompany文件夹trunk.
  • 我改变Test.javadev-branch.
  • 我合并dev-branchtrunk.
  • 树冲突结果.

为什么,为什么,SVN不能处理这个?我们做错了吗?这感觉应该很容易,但我公司的每个工程师都受到了阻碍.

在这里寻找面向SVN的答案(不是'移动到git'等).

mad*_*xej 8

在SVN中,移动是删除和添加.当您在分支中合并时,它将执行移动的添加部分,但由于冲突,它无法执行删除操作.您现在必须手动解决冲突

  1. 复制你Test.javacom/mycompany/Test.java,覆盖旧的.这解决了与该文件的冲突.
  2. Test.java从旧位置删除文件.这是执行合并时SVN无法执行的更改集删除部分的手动方式.使用该svn delete Test.java命令.
  3. 告诉SVN冲突已解决,工作目录是否正确svn resolve --accept working .最后的点是当前目录
  4. 告诉SVN Test.java文件的冲突也解决了svn resolve --accept working Test.java

然后,您可以提交合并的版本,然后重新与存储库同步.

  • 这是没有希望的.来自svn docs:'一个共同的愿望是重构源代码,特别是在基于Java的软件项目中.文件和目录被改组并重命名,经常对项目中的每个人造成很大的干扰.听起来像是一个使用分支的完美案例,不是吗?只需创建一个分支,随意移动东西,然后将分支合并回主干,对吧?唉,这种情况现在不能很好地工作,被认为是Subversion当前的弱点之一. (7认同)