【问题标题】:SVN - Reintegration Merge error: "must be ancestrally related"SVN - 重新整合合并错误:“必须与祖先相关”
【发布时间】:2009-01-29 01:24:41
【问题描述】:

使用 TortoiseSVN - 当我使用 Test Merge 时,我收到错误“http://mysvnserver/svn/main/branches/ProjectA must be an ancestrally related to http://mysvnserver/svn/main/trunk/ProjectB

我能做些什么来解决这个问题?

【问题讨论】:

  • 这个问题你解决了吗?我有同样的问题,我想将从主干创建的分支重新集成到同一个主干。

标签: svn tortoisesvn


【解决方案1】:

我刚刚遇到了类似的问题,想添加我遇到的问题和解决方案。分支是由树干的子文件夹而不是整棵树制成的。因此,当我尝试重新整合时,我的层次结构不匹配。只需将集成重组为我的主干 WD 的正确子文件夹即可继续该过程。

希望这可能对点击此 Q/A 的人有所帮助。 :)

【讨论】:

  • 完美 - 为我节省了“手动”合并 :)
  • 这有帮助(我的问题是分支被重命名),我只是将分支重命名(到旧分支)并重新分支。对两个分支进行了比较并重新整合了分支。
  • 这也是我的问题。我有几个项目的解决方案。下拉列表的默认值有一个“较低级别”条目,而不是我需要与我的“工作副本”条目的顶层对齐。我删除了 URL 的尾部,使其与我的 Subversion 存储库的顶级 URL 匹配。
【解决方案2】:

让我猜猜:这些项目不相关?查找历史记录,如果其中一个曾经分支过。

立即解决方案:手动合并或尝试使用“svn merge --ignore-ancestry”命令行

【讨论】:

  • 当我使用 --ignore-ancestry 时出现此错误。 svn: E200004: 忽略mergeinfo时无法自动合并
【解决方案3】:

正如davebytes 所述,当您将trunk\X 分支到branches\Y,然后将X 移动到新文件夹Z 中时,可能会出现此问题,即trunk\X\Z

如果您只是尝试将branches\Y 上的更改合并到trunk\X,您会遇到很多冲突;如果你只是尝试将branches\Y 合并到trunk\X\Z 中,你会得到“祖先相关”的错误。

但是,the SVN manual describes the underlying problemsvn merge 真的应该被称为svn diff-and-apply。在这种情况下,您应该尝试描述的是,您尝试总结 branches\Y 从 r100 到 r200 发生的变化,并将这些变化应用到 trunk\X\Z\

在 TortoiseSVN 中,这是 合并两个不同的树 场景到 trunk\X\Z 的本地工作副本,branches\Y 的 r100 设置为“来自”,branches\Y 的 r200 设置作为“到”。

【讨论】:

    【解决方案4】:

    由于以下原因,我们遇到了这个问题:

    用 TortoiseSVN 的 repo 浏览器创建了一个文件夹,并将其用作分支。之后我们尝试将手动创建的文件夹合并到工作文件夹中。

    解决方案是:首先不要手动创建分支,而是使用 TortoiseSVN -> Branch/tag... 选项来创建分支。

    希望这会有所帮助。

    【讨论】:

    • 很遗憾,不在的同事不知道这个问题,留给我们处理吧!
    • 这实际上并没有告诉如何修复它。只是如何避免它。这确实是一个有价值的信息,但可以更完整。
    • 将此视为比通常的评论更长一些并且需要更多关注的评论,介于评论和答案之间。
    【解决方案5】:

    一开始我尝试在根文件夹中合并,但出现错误,然后我浏览到要合并的特定文件夹,然后选择要合并的正确文件夹。

    例子,

    在我的分支中,我有项目结构:

     -Root    
        - Code
        - DB
    

    我创建了一个标签并更改为标签的 DB 文件夹。现在我想将标签的更改带到分支。所以,我切换到我的分支并尝试合并并得到错误“必须与祖先相关”。

    所以解决办法是,

    I browsed to "DB" folder in branch, right click and select Tortoise SVN->Merge-> Merge a range of revisions -> 
    

    现在,从要合并的 URL 中,我选择了:

    the "DB" folder from my tag.
    Then, "test branch". Everything worked fine :D
    

    所以,然后我点击了“合并”按钮。

    【讨论】:

      【解决方案6】:

      如果您的文件名称与其中一个分支(或主干)完全相同,则可能会发生此错误:

      # svn switch ^/trunk
      Updated to revision 123.
      # ls
      file1
      file2
      v1
      # svn merge --reintegrate ^/branches/v1
      svn: E195016: ^/branches/v1@123 must be ancestrally related to ^/trunk/v1@123
      

      要解决这个问题,请将当前目录添加到命令中(注意点):

      # svn merge --reintegrate ^/branches/v1 .
      

      这是一个真实的例子,我花了几个小时非常不愉快。 :(

      【讨论】:

        【解决方案7】:

        我遇到了同样的问题。我通过正确的 cd 修复了它,我在它上面合并了。我在路径目录中合并到项目而不是在主干的路径目录中(谁是实际的祖先)。

        【讨论】:

          【解决方案8】:

          我正在与另一个项目合并。导致了这个问题。我与正确的分支合并,然后它工作正常。我的坏,阅读障碍

          【讨论】:

            【解决方案9】:

            我也遇到了同样的错误,原因是权限问题。

            问题是因为一位开发人员试图将更改从一个他具有读/写访问权限的分支集成到另一个他也具有读/写访问权限的分支,但最后一个是从另一个分支创建的分支,他只有读访问权限.

            这是具有权限的结构(r = 读取,w = 写入):

            树干 (r) 发展(r) 质量保证 (rw) 分支机构 featureBranch1 (rw)

            在这种情况下,develop 是从trunk 创建的,QA 是从develop 创建的,而 featureBranch1 是从develop 创建的。事实上,他尝试将 featureBranch1 重新集成到 QA 中,这是从 develop 创建的一个分支,并且他没有写入权限以进行开发,在我们的案例中,这是他在 QA 中尝试重新集成 featureBranch1 时收到此消息的问题。

            在以书面形式授予他开发权限后,该消息立即消失。

            【讨论】:

              猜你喜欢
              • 2018-01-19
              • 1970-01-01
              • 2015-10-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-06-18
              • 1970-01-01
              相关资源
              最近更新 更多