代码之家  ›  专栏  ›  技术社区  ›  Brian MacKay

Subversion合并问题:还无法重新集成

  •  2
  • Brian MacKay  · 技术社区  · 17 年前

    我正在评估Subversion的分支/合并功能,我决定做一个简单的测试——我分支了一个现有的项目,在一个文件中更改了一个注释,然后通过Tortoise进行了合并重新集成。

    失败了:

    命令:重新集成合并 https://oscar/svn/Baxtech/ViM/Branches/Test3 输入c:\inntec\vs2008\baxtech\vim
    错误:无法从“”重新集成 https://oscar/svn/baxtech/vim/branches/test3 然而:
    错误:某些修订已合并到其中,但尚未合并
    错误:进入重新集成目标;先合并它们,然后重试。

    我在谷歌上搜索了一下,发现一些帖子说这与重命名创建的mergeinfo和旧版tortoise中的目录更改有关。

    我最近确实从以前的版本升级到了1.5.5版,但是这个问题似乎是1.5版之前的版本。 我只在一个文件中修改了一些评论。我没有做任何重命名或目录结构更改。

    然后,我们对主干进行了一段时间的工作(没有任何分支),所以可能存在问题吗?

    所以,如果能解决这个问题,我会非常感谢你的帮助。不过,这也是典型的吗?这真的是一个 非常 简单的测试,不幸的是现在我有点害怕使用颠覆来进行分支。

    Subversion:1.5.4(通过VisualVN服务器)
    乌龟:1.5.5

    我们也在使用Visual Studio 2008。

    谢谢!

    布瑞恩

    6 回复  |  直到 14 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    这在我身上也发生过。

    我不记得我是怎么触发这个问题的,但我可以说我也在使用1.5之前的版本,然后切换到1.5.0。

    Subversion使用每个目录的svn:mergeinfo属性跟踪合并。此属性应该只存在于工作副本的根路径上(如果我错了,请更正我)。 当我看到这个错误时,我注意到1.5之前的版本在工作副本内的文件上创建了显式的mergeinfo,这阻止了稳定版本正常工作。正如你在你的 last reply ,删除这些额外的mergeinfo条目也为我解决了问题。

    我的建议是尝试使用一个新的存储库,而不使用来自测试版的提交,然后看看是否会再次发生这种情况。

        2
  •  5
  •   David Citron    14 年前

    问题(通常情况下)是当合并源有一些子树合并信息时,SVN1.5会发出特定的错误消息。正如您正确指出的,解决这个问题的方法是删除任何子树mergeinfo。详细的权威答案可在以下网址找到: http://blogs.collab.net/subversion/2008/07/subversion-merg/

        3
  •  2
  •   Brian MacKay    17 年前

    这个问题与mergeinfo有关。我不太确定问题出在哪里,但我想我清除了mergeinfo,现在一切都很好。

    我需要进一步了解一下为什么我的mergeinfo有问题,以及它实际上做了什么。非常令人沮丧!

    编辑: 从现在升级到现在已经有一段时间了,我再也没有遇到这个问题。

        4
  •  1
  •   Ben Scheirman    17 年前

    我发现从命令行合并要容易得多。

    svn merge -r N:M SOURCE [PATH]
    

    n是您对分支所做的修订,m是您要包括最多(或当前标题)更改的修订。源是分支路径。如果在目标工作目录中执行此操作,则不需要最后一个参数。

    一个例子:

    //sitting in main trunk
    svn merge -r 55:HEAD svn://my.repo.url/branches/my_branch
    

    这将合并从55开始在分支到主干的所有更改。

        5
  •  0
  •   Ricardo Villamil    17 年前

    想不出任何原因,我从来没有看到过这个错误,我大量使用分支/合并。我会检查以下几点:

    • 从主干工作副本开始合并(右键单击->svn->合并)?
    • 如果你说测试合并会发生什么?
    • 检查一下“忽略祖先”怎么样?
    • 确保合并深度为“工作副本”

    顺便问一下,您的存储库是什么版本的SVN?

        6
  •  0
  •   Devrin    17 年前

    我用SVN很长时间了,从来没有见过这个,当然我用乌龟的时间不多。需要考虑的几点:

    1. 日志显示您试图合并 ../ViM/branches/.. 进入之内 ../ViM/ . 你没有 ../ViM/trunk/ 或者日志只是打印一些有趣的东西?我可以想象尝试将一个分支合并成代码库之外的其他东西会把事情搞砸。

    2. 在创建分支之后,但在重新集成主干之前,是否提交了对主干的任何更改?如果是这样,请确保在尝试将这些更改合并回主干之前将其合并到分支中。

    3. svn cleanup 在你的分支和主干上,确保所有未完成的事务都被清理干净。

    4. 我不确定这是否会导致任何问题,但在您重新整合更改之前,可能需要更新您的主干工作副本。