12

我有一个具有以下结构的项目

^/project/trunk
^/project/branches/mybranch

当前 HEAD 是修订版 1048。分支是从 r523 中的主干复制的。主干已合并到 mybranch,结果为 r1048。上的合并信息^/project/branches/mybranch给出

/project/trunk:523-1047

并且trunk的mergeinfo没有提到任何来自^/project/branches/mybranch. 实际上,在现实中,主干和分支也同时保存来自分支的合并信息,mybranch但这些合并信息在两个输出中看起来是完全相同的。

现在我进入我的主干工作副本并尝试发布

svn merge --reintegrate ^/project/branches/myproject

我收到一条错误消息,上面写着:

svn: Reintegrate can only be used if revisions 523 through 1048 were previously merged from file:///home/svn/project/trunk to the reintegrate source, but this is not the case:
  project/branches/mybranch/src
    Missing ranges: /project/trunk/src:523-1047

这很奇怪,因为我的分支文件夹上的 mergeinfo 告诉我 523-1047 已正确地从主干合并到分支。那个子文件夹是怎么回事?src是一个明显存在于主干和分支中的目录。

我认为这就是可疑之处。如果我通过查看 mybranch/src 的合并信息,svn pg svn:mergeinfo ^/project/branches/mybranch/src@HEAD我什么也得不到。但是,如果我查看trunk/src(svn pg svn:mergeinfo ^/project/trunk/src@HEAD),我会得到

/project/branches/mybranch/src:784

所以似乎有人在那里从树枝到树干进行了樱桃采摘。但是,这不会出现在中继文件夹本身中。

这就是问题所在吗?最重要的是:我该如何治愈它?

4

2 回答 2

14

这就是问题所在吗?

是的,完全正确 - 稍后合并子树总是混淆重新集成

最重要的是:我该如何治愈它?

从 /project/trunk/src 中删除 mergeinfo

于 2013-02-20T21:32:27.010 回答
4

这是一个非常相似的主题,您可能想看看:

仅当先前合并了修订的 URL 以重新集成源时,才能使用重新集成

特别是当我遇到同样的问题并且不想删除 mergeinfo 时,Paul Whipp 的这个回答对我有很大帮助,因为这听起来像是一种解决方法,而不是“真正的”修复

简而言之:尝试为该特定文件/文件夹手动合并缺少的信息(正如 svn 建议的那样)。对我来说就像一个魅力。

有关相应的代码示例等,请参见 Pauls 答案。

于 2013-11-25T15:21:37.627 回答