SVN合并移动的源代码文件
我觉得我拥有世界上最简单的SVN用例:SVN合并移动的源代码文件,svn,merge,Svn,Merge,我觉得我拥有世界上最简单的SVN用例: 我在SVN的trunk中有一个文件,Test.java I分支主干至开发分支 我将Test.java移动到trunk中的com/mycompany文件夹中 我在dev分支中更改Test.java 我将开发分支合并到主干 树冲突结果 为什么,为什么,SVN不能处理这个?我们做错什么了吗?这感觉应该很容易,但我公司的每一位工程师都受到了阻碍 在这里寻找面向SVN的答案(不是“移动到git”等)。在SVN中,移动是删除和添加。当您合并到分支中时,它将执行移动
- 我在SVN的
中有一个文件,trunk
Test.java
- I分支
至主干
开发分支
- 我将
移动到Test.java
中的trunk
文件夹中com/mycompany
- 我在
dev分支
中更改
Test.java
- 我将
合并到开发分支
主干
- 树冲突结果
在这里寻找面向SVN的答案(不是“移动到git”等)。在SVN中,移动是删除和添加。当您合并到分支中时,它将执行移动的添加部分,但由于冲突,它无法执行删除。您现在必须通过以下方式手动解决冲突:
Test.java
复制到com/mycompany/Test.java
,覆盖旧的。这将解决与该文件的冲突Test.java
文件。这是手动执行更改集删除部分的方法,SVN在执行合并时无法执行。使用svn delete Test.java
命令李>
SVN resolve--accept working告诉SVN冲突已解决,并且您的工作目录正确。
末尾的点表示当前目录Test.java
文件的冲突也通过SVN resolve--accept working Test.java
然后,您可以提交合并的版本,并恢复与存储库的同步。在执行合并之前,请尝试在开发分支上执行SVN更新。我正在使用以下符号将开发分支合并到主干中:开发分支的SVN合并url-r rev1:rev2。尝试执行SVN更新,然后使用更高的修订号作为rev1。为什么会有帮助?我正在把树枝并入树干。分支是一个远程URL,因此根据定义它应该是最新的。我唯一拥有的本地文件夹是trunk,在执行合并之前,我确保它是最新的。我认为@GilbertLeBlanc的意思是首先将trunk合并到branch,这听起来与刚才的问题完全相同。这是一位工程师今天在我们的对话中指出的。这是不幸的。这个问题当然不是难以解决的。svn中是否有计划支持真正的svn移动,其实现是先删除,然后添加?这是没有希望的。来自svn文档:“一个共同的愿望是重构源代码,特别是在基于Java的软件项目中。文件和目录被随意移动和重命名,通常会对项目中的每个人造成极大的干扰。使用分支听起来很合适,不是吗?只需创建一个分支,然后将分支合并回主干,对吗?唉,这个场景目前效果不太好,被认为是Subversion当前的弱点之一。“实际上,
mv
是cp
和rm