Eclipse和Subversive存在问题。
我正在尝试将项目的一个分支重新集成到主干中。
这些是我正在遵循的操作:
Merge operation failed.
Can't overwrite cause with org.tmatesoft.svn.core.SVNException: svn: E195016:
Cannot merge into a working copy with a switched subtree
我不明白什么是错的。
我正在使用这个Eclipse和SVN配置:
Eclipse Java EE IDE for Web Developers.
Version: Neon.1 Release (4.6.1)
Build id: 20160913-0900
Subversive SVN Team Provider 4.0.3.I20161129-1700
SVNKit 1.8.14 Implementation (Optional) 6.0.3.I20161124-1700
SVN 1.9
提前致谢。
答案 0 :(得分:2)
我不确切知道为什么会出现这个问题,但我注意到如果我们在合并操作之前在分支之间执行一些“切换”操作,就会发生这种情况。
由于某些原因,在这种情况下,可以避免执行合并操作。
我找到的“解决方法”是在SVN签出中继后,在干线的干净副本上执行合并操作,而不进行任何切换操作。
通过这种方式,错误不再发生。
这不是一个实用的解决方案,但它确实有效。
答案 1 :(得分:1)
Reintegration merges in SVN 1.8 and newer are done automatically。如果您的工作副本是混合版本或已切换路径,则无法执行自动重新集成合并。
然而,SVNKit可能与实际的Apache Subversion不同。
了解SVNBook中的自动合并:
您的中继工作副本无法进行任何本地修改,切换路径, 或包含修订的混合物(参见章节 “混合修订工作副本”)。虽然这些通常是最好的 无论如何合并的做法,它们都是自动化的 重新融合。
答案 2 :(得分:1)
我想我已经找到了两种方法进入 E195016:无法合并到具有切换子树状态的工作副本。
1)从主干切换到分支(带编辑和提交),然后切换到另一个分支(带编辑和提交),然后切换到主干并尝试重新集成其中一个分支。
提示:切勿在分支之间切换,始终切换回分支之间的主干。
2)在行李箱中意外编辑,然后意识到你的错误。还原主干,创建分支(带开关,编辑和提交),切换回主干,然后尝试重新集成分支。
提示:永远不要恢复行李箱。请改为使用(右键单击)上下文菜单中的替换为存储库中的最新内容。
我只找到了一种可靠地从这种状态恢复的方法。
如果您成功恢复,则不会使用备份,如果您犯了一个灾难性的错误,它只是一个安全网。
在我的情况下,替换项目意味着从SVN创建一个新的项目并使用该选项使用新的项目向导(在我的案例中为PyDev Project)完成项目。在您的情况下,您需要开发自己的恢复方法。别忘了写下来。
当然,您可以选择启动全新的工作区。如果您选择此方法,请不要忘记导出首选项和启动器(至少),以便将它们导入新工作区。这样你仍然可以使用熟悉的配置。