5

我对 Eclipse 和 Subversive 有疑问。

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

这些是我正在关注的操作:

  1. 切换到项目的trunk版本
  2. 我确保没有任何挂起的操作,执行恢复和更新,以便从“干净”的工作副本开始,与主干的远程副本完全同步
  3. 我去“团队 - >合并......”
  4. 我转到“重新集成”选项卡,然后选择要在主干中合并的分支,指向该分支的“Head revision”。
  5. 我按下 OK 按钮,但这是我得到的错误:

 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

提前致谢。

4

3 回答 3

3

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

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

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

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

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

于 2016-12-14T07:55:03.683 回答
1

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

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

提示:永远不要在分支之间切换,总是在分支之间切换回主干。

2)不小心在trunk中编辑,然后意识到你的错误。恢复主干,创建一个分支(带有切换、编辑和提交),切换回主干,然后尝试重新集成该分支。

提示:永远不要放回行李箱。改用(右键单击)上下文菜单中的替换为,来自存储库的最新。

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

  1. 备份您的工作区。
  2. 选择Delete project contents on disk (cannot be undo)从原始工作区中删除您的项目。
  3. 创建一个新项目来替换它。

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

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

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

于 2017-04-20T19:51:02.013 回答
1

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

不过,SVNKit 的工作方式可能与实际的 Apache Subversion 不同。

阅读SVNBook中的自动合并:

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

于 2017-01-23T15:15:12.473 回答