繁体   English   中英

颠覆性:svn:E195016:无法合并到带有切换子树的工作副本

[英]Subversive: svn: E195016: Cannot merge into a working copy with a switched subtree

我有Eclipse和Subversive的问题。

我正在尝试将项目的一个分支重新集成到主干中。

这些是我正在遵循的操作:

  1. 切换到项目的主干版本
  2. 我确保没有任何待处理的操作,执行还原和更新,以便从“干净”的工作副本开始,与主干的远程副本完美同步
  3. 我去“团队 - >合并......”
  4. 我转到“重新整合”选项卡,然后选择要在主干内合并的分支,指向分支的“头部修订”。
  5. 我按下确定按钮,但这是我获得的错误:

 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

提前致谢。

我不确切知道为什么会出现这个问题,但我注意到如果我们在Merge操作之前在分支之间执行一些“切换”操作,就会发生这种情况。

出于某些原因,在这种情况下,可以避免执行合并操作。

我找到的“解决方法”是在SVN签出中继后,在干线的干净副本上执行合并操作,而不进行任何切换操作。

这样,错误就不再发生了。

这不是一个实用的解决方案,但它确实有效。

默认情况下,SVN 1.8和更新版本中的重新集成合并会自动完成 如果您的工作副本是混合版本或已切换路径,则无法执行自动重新集成合并。

但是,SVNKit可能与实际的Apache Subversion不同。

阅读SVNBook中的自动合并:

您的主干工作副本不能具有任何本地编辑,切换路径或包含修订的混合(请参阅“混合修订工作副本”一节)。 虽然这些通常是合并的最佳实践,但它们是自动重新集成合并所必需的。

我想我已经找到了两种进入E195016的方法:无法合并到具有切换子树状态的工作副本

1)从主干切换到分支(带编辑和提交),然后切换到不同的分支(带编辑和提交),然后切换到主干并尝试重新集成其中一个分支。

提示:切勿在分支之间切换,始终切换回分支之间的主干。

2)意外地在后备箱中编辑然后实现你的错误。 恢复中继,创建分支(使用开关,编辑和提交),切换回主干,然后尝试重新集成分支。

提示:永远不要恢复行李箱。 使用(右键单击)上下文菜单中的替换为最新存储库

我只找到了一种从这种状态可靠恢复的方法。

  1. 备份您的工作区。
  2. 从原始工作区中删除项目,选择“ 删除磁盘上的项目内容”(无法撤消)
  3. 创建一个新项目来替换它。

如果您成功恢复,则不会使用备份,如果您犯了一个灾难性的错误,它只是一个安全网。

在我的例子中,替换项目意味着从SVN创建一个新项目并使用该选项使用新项目向导(在我的案例中为PyDev Project)完成项目。 在您的情况下,您需要开发自己的恢复方法。 别忘了写下来。

当然,您可以选择启动全新的工作区。 如果您选择此方法,请不要忘记导出首选项和启动器(至少),以便将它们导入新工作区。 这样你仍然有你熟悉的配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM