SVN:“树冲突已经存在”,但在我尝试合并之前没有

时间:2010-02-25 08:41:09

标签: svn merge tree-conflict

我从SVN收到此错误消息:

  

svn:尝试添加已存在的树冲突

现在,已经在本网站上询问过,并且给出的解释是在上一次合并之后尚未解决树冲突,现在SVN正在尝试再次添加相同的树冲突。

所以我调用了“svn status”并将所有树冲突标记为已解决。然后我做了* svn revert -R **并仔细检查“svn status”的输出是否完全为空。然后我再次尝试合并,在完全相同的地方使用完全相同的错误消息。

在我看来,svn尝试在同一个合并操作期间两次在同一个地方添加树冲突,在所有应有的尊重下,这将是SVN中的严重错误。 / p>

3 个答案:

答案 0 :(得分:2)

似乎这个文件夹的来源是我以一种不符合SVN喜好的方式重命名的文件夹。我没有使用svn move命令,而是在本地重命名了该文件夹,使用svn remove删除了旧文件夹名称,并添加了svn add新文件夹。但是,这会产生一个具有旧名称的“幻像文件夹” - 它既不存在于工作副本中也不存在于存储库中,但SVN认为它存在。幻像文件夹导致我上面提到的致命树冲突。

以下是我们解决这个问题的方法:

  1. 将主干合并到分支中。分支现在是您最终想要的主干。

  2. 创建一个新分支作为主干的克隆。

  3. 将您的工作目录切换到最新的分支(即您最终想要作为主干的分支)。在那里使用svn diff > update.patch

  4. 将update.patch复制到新创建的克隆分支的文件夹中。

  5. 将工作目录切换到克隆分支的目录并应用修补程序。克隆分支现在几乎与最新分支完全相同,但有一点不同:这些隐藏的svn文件中没有提到幻像文件夹。

  6. 将克隆分支合并回主干。

答案 1 :(得分:0)

问题的背景

我对我的工作副本进行了更改,认为如果我没有明确地"提交" ,那么它就不会影响我在服务器上的回购。

为了抵挡一些警告(不记得),我曾多次使用"更新" 。在找到我自己挖出的这个洞之后,我明白" update" 命令的工作方式如下:

  1. 如果工作副本被修改/最新,它将提交到repo。
  2. 如果回购是最新的,它会像" checkout" 一样工作(据我所知)。
  3. 我正在使用2个分支( dev alpha )。我想将 dev 分支合并到 alpha

    用于修复的步骤

    1. 更新我的 alpha 到我故意提交的修订
    2. dev 合并到 alpha
    3. 注意:我使用的是SmartSVN。

答案 2 :(得分:0)

我有同样的问题。我右键单击并选择恢复。这解决了所有合并冲突问题。