SVN合并重新集成缺少的范围,但没有合并

时间:2012-10-24 19:09:13

标签: svn merge branching-and-merging svn-reintegrate

这是谜语:

C:\code\trunk> svn merge --reintegrate http://svn.e.com/repos/branches/lih --accept postpone --dry-run
svn: E195016: Reintegrate can only be used if revisions 11430 through 12384 were previously merged from http://svn.e.com/repos/trunk to the reintegrate source, but this is not the case:
  branches/lih
    Missing ranges: /trunk:11902

但是如果我进入分支的目录并尝试合并该范围,则无需合并!

C:\code\branches\branch> svn merge -r 11901:11902 http://svn.e.com/repos/trunk --accept postpone --dry-run
C:\code\branches\branch>

即使svn merge -r 11898:11903也没有显示要合并的内容。

现在我似乎无法将我的分支重新整合到后备箱中!请帮忙!

P.S。 lih分支直到11906才创建。它从高速分支分支,从分支分支(高清已经合并回主干)。

2 个答案:

答案 0 :(得分:5)

我刚刚碰到了类似的问题,其中的问题是后备箱有两次取消修改(即在主干上没有转速20857的转速20865)。因此,当我第一次从主干到分支合并时,它没有为这对修订版本合并的内容,但是没有将它们包含在有问题的文件的mergeinfo中。然后,当我尝试从分支机构合并回主干时,它反对这两个修订版本丢失了。

我的解决方案(在手动验证相关文件的修订被取消之后)是将两个修订中的每一个明确地合并到分支中(通过svn merge ^ / trunk -c 20857和svn merge ^ / trunk -c 20865 ),提交,然后将分支合并回主干。第二次,进展顺利。这是Subversion 1.8.0(r1490375)。

我之前能够解决类似的问题,使用merge和--record-only将更改标记为在分支上正确合并,但是合并实际文件可能更安全(以防万一有更改)完全取消了。

看起来像Subversion 1.8处理mergeinfo以取消对我的更改的方式中的错误。

答案 1 :(得分:3)

这似乎对我有用,但我不能声称理解它或保证这是解决我问题的最佳方法。

首先,您的分支机构拥有对trunk的所有最新提交非常重要。所以同步它(从主干到分支合并)。

然后你可以通过在trunk目录中执行此操作来强制重新集成: svn merge http://svn.e.com/repos/trunk/@REV http://svn.e.com/repos/branches/lih/ . --dry-run(但用最新版本#替换REV。)