我试图合并一个树干到一个分支,但结束了很多树冲突,没有任何文件合并。为了解决这些冲突,我只是打开文件并手工复制内容,这就违背了合并操作的目的。 将树干合并到分支(在subclipse中)的正确方法是什么?Subclipse树冲突
0
A
回答
0
那个分支是如何创建的?它是使用svn cp
创建的,还是手动将这些文件复制到该分支中?
让我们来看看下面的例子:
$ svn mkdir trunk
$ vi trunk/foo trunk/bar
$ svn add trunk/foo trunk/bar
$ svn commit -m"Added foo and bar to trunk"
你现在有主干两个文件。
$ svn mkdir --parents branches/1.0
$ cp trunk/* branches/1.0/
$ svn add branches/1.0/*
$ svn commit -m"Duplicated files onto branch"
我所做的是创建在1.0分支两个完全不同的foo
和bar
。根据Subversion,这两个文件完全没有关系。如果您在1.0分支上进行了更改,并尝试将这些更改合并回主干,则会与诸如“本地添加,传入添加”之类的消息产生很多冲突。
什么上面的用户应该做的是:
$ svn cp --parents trunk branches/1.0
$ svn commit -m"Branched trunk and not merely duplicate files"
现在,有这么颠覆树干上的文件之间并在1.0分支理解的关系。合并将顺利进行。
这里的另一种方式,打破了合并:
$ svn delete trunk/foo
$ svn commit -"deleted foo"
$ svn cat -rPREV trunk/[email protected] > foo
$ svn add foo
$ svn commit -m"Added foo back in. Shouldn't have deleted it.
据颠覆,现在有在后备箱命名foo
两个完全不同的文件。有你删除的文件,还有你添加的文件。这两个文件没有任何关系。想象一下,如果我将分支(使用svn cp
的正确方法)分支到1.0分支,那么我的删除和复制foo
。由于分支上的foo
与trunk上的foo
没有任何关系,因此1.0分支与主干的合并将会产生冲突。
要恢复文件,您需要复制已删除的修订(或使用svn merge -c
)。
$ svn cp -rPREV http://svn.repo/svn/trunk/[email protected] .
$ svn commit -m"Actually old foo now has been restored! Merges will work"
如果分支不正确或删除并将文件重新添加回主干,将会发生冲突。您可以尝试使用--ignore-ancestory
参数,并且可以在运行实际合并之前使用--dry-run
来测试您的合并。
如果您手动合并,则可以使用svn merge --record-only
仅记录您进行合并而不实际执行合并的事实。这可能有助于您下次进行合并,因为您至少可以重新编码您手动完成的操作。
相关问题
- 1. SVN中的树冲突(subclipse)
- 2. SVN树冲突的Subclipse
- 3. 与Subclipse合并时出现树冲突
- 4. Subclipse冲突解决
- 5. svn树冲突
- 6. Subclipse svn没有显示冲突
- 7. Subclipse>意外合并冲突解决
- 8. 解决树冲突
- 9. svn merge:树冲突怪异
- 10. SVN树冲突错误
- 11. SVN树冲突,而合并
- 12. SVN树冲突问题
- 13. SVN合并树冲突
- 14. 在subclipse中使用svn时发生冲突
- 15. 在eclipse中冲突时发生Subclipse文件提交问题4.2.0
- 16. SVN(Subclipse)在合并冲突后创建.edited文件
- 17. 解决树冲突乌龟SVN
- 18. SVN树冲突 - 只想获取文件?
- 19. 树冲突时,在工作副本
- 20. 无法解析与SVN的树冲突
- 21. 提升属性树访问冲突
- 22. SVN X仍然存在树冲突
- 23. 什么是svn中的树冲突?
- 24. C++二叉树冲突类型错误
- 25. Xcode解决合并树冲突
- 26. TortoiseSVN给我一棵树冲突
- 27. 合并时的TortoiseSVN“树冲突”文件
- 28. 导出/导入树(ID的冲突)
- 29. 如何“修复”SVN分支/树冲突?
- 30. 乌龟SVN树冲突与自己
如果分支不是使用svn cp创建的,它的历史是否也包含主干历史记录,直到这一点?因为我可以看到分支历史记录中的主干日志。无论如何,现在我知道正确的分支方式来避免合并错误,谢谢你的详细答案。 – Rnet