我正在尝试将开发分支重新集成到我的Subversion 1.5存储库中的trunk中。在此操作之前,我将所有更改从主干合并到开发分支。现在,当我尝试从分支重新集成更改时,我收到以下错误消息:
Command: Reintegrate merge https://dev/svn/branches/devel into C:\trunk
Error: Reintegrate can only be used if revisions 280 through 325 were previously
Error: merged from https://dev/svn/trunk to the reintegrate
Error: source, but this is not the case:
Error: branches/devel/images/test
Error: Missing ranges: /trunk/images/test:280-324
...
然后消息继续抱怨我的项目中的一些文件夹。但是当我尝试将更改从主干再次合并到开发分支时,TortoiseSVN告诉我没有什么可以合并(因为我之前已经合并了所有更改):
Command: Merging revisions 1-HEAD of https://dev/svn/trunk into C:\devel, respecting ancestry
Completed: C:\devel
我正在尝试按照此处的说明进行操作:http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html,但没有解决此类问题的任何内容。
有什么想法吗?也许我应该删除主干然后复制我的分支?但我不确定它是否安全。
svn merge with --reintegrate complains about missing ranges but mergeinfo seems correct
答案 0 :(得分:27)
我们在这个问题上挣扎了几个星期,我们终于解决了它。
在我们的案例中,我们每天都在与所有主干版本合并的分支机构上工作。当我们尝试重新集成它(合并回主干)时,我们遇到了这个错误。 当我们尝试将缺失的范围合并到我们的分支时,我们得到消息说没有什么可以合并。它发生在几个不相关的分支和不同的文件和文件夹中。
解决方案是将缺少的范围添加到我们分支中文件或文件夹的svn:mergeinfo属性。
对于每个"缺失范围:路径:revision_range"你收到的信息中的一行:
提交所有更改并重新集中
答案 1 :(得分:26)
您必须首先将修订版r280到r324从trunk合并到您的分支中。
看起来你已经将r325合并到了你的分支中,但是--reintegrate需要得到所有版本直到合并的最新版本。必须没有差距。 所以这里有一点Diag:
+----------------------> /branches/devel
/ / \<--merge not working!
--------/-------+--+---+-----+---------> trunk
| \ | / |
280 \ V / 325
V
missing sync merges from trunk to branch
我认为这是您的分支结构,因此您需要同步从主干到分支的所有更改。你只合并了r325,所以只需合并r280-r324,这样你就可以使用--reintegrate
答案 2 :(得分:9)
我有这个问题,它最终是由我的分支中的文件夹的错误SVN属性引起的。
解决方案很简单 - 我使用已报告丢失的特定修订号从干线合并到我的分支。
然后指定仅记录合并,例如。
此操作正确地使我的分支与trunk一致,并且我的后续分支重新集成到trunk中成功运行,没有遗漏范围错误消息。
此技术避免了对任何文件/文件夹的任何svn:mergeinfo属性的任何手动编辑。
答案 3 :(得分:4)
当我开始使用-r选项进行svn merge命令时,我停止了这些问题,并且在没有它合并之后才尝试执行--reintegrate。我正在使用svn 1.6.1。
这就是我的所作所为:
1.当从分支合并到主干或从主干到分支时,我使用-r选项,如下所示:
cd branchWorkArea/topDir
svn merge -r<branchPoint>:HEAD [otheroptions] svn://svn/project/trunk/topDir
当我解决了任何冲突并测试我的代码时,我将合并提交给分支,然后使用相同的基本选项将分支合并到主干(特别是-rBranchPoint:HEAD)
当测试并提交了trunk时,我使用--reintegrate选项来关闭分支。确保你也使用-rbranchPoint:HEAD选项。
对于其他选项,我总是使用
- 深度无穷大(默认值 1.6.2中的无穷大但不是之前) -x -b -x -w --ignore-eol-style
也许,我很幸运,但事情似乎确实更好。
要查找分支的分支点,请执行svn log --stop-on-copy,然后查看最后一次转换 - 它将是创建分支的svn副本。
要在linux上执行此操作,我会执行以下操作:
svn log --stop-on-copy svn:// svn / project / trunk / topDir |
grep'^ r'|尾巴-1 | sed -e's / ^ r // 1'-e's /。* // g'
这应该打印分支点的修订号。
祝你好运答案 4 :(得分:0)
这不是一个答案,而是一个明确的问题。
我的错误消息是:
Reintegrate can only be used if revisions 2669 through 3403 were previously merged from
https://../schemas
to the integrate source, but this is not the case:
trunk/schemas:
Missing ranges:
../schemas:2673,2682,2720,2736,2878,2960,3003,3057
我使用以下提供的解决方案合并了修订版本: @Greg Trevellick,仍然收到错误消息。
当我按照schema文件夹上@pako的回答打开svn:mergeinfo属性时,内容看起来像
/branches/repos_develop_os/trunk_branch-os/schemas:3329
/trunk/schemas:2669-2673,2682,2720,2736,2878,2960,3003,3057
我不确定该如何修改此内容。看起来丢失的范围就在那里。
答案 5 :(得分:-1)
我刚遇到这个问题,对我来说最重要的是,将分支与Trunk同步,以便分支机构可以从主干获得最新的更新。在此之后,我尝试将分支重新整合到主干并且工作正常。