我正在尝试将开发分支重新集成到我的 Subversion 1.5 存储库中的主干中。在此操作之前,我将所有更改从主干合并到开发分支。现在,当我尝试重新集成分支中的更改时,我收到以下错误消息:

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 抱怨缺少范围,但 mergeinfo 似乎是正确的

有帮助吗?

解决方案

您需要合并修订R280到r324从主干到您的支路的第一。

看来你已经合并R325到您的分支,但是--reintegrate需要得到的所有的修订,直到你的最新版本合并。必须有没有间隙。 所以这里有点Diag(诊断):

           +----------------------> /branches/devel
          /                    /   \<--merge not working!
 --------/-------+--+---+-----+---------> trunk
         |       \  |  /      |
        280       \ V /      325
                    V
                  missing sync merges from trunk to branch

我觉得这是你的分支结构,所以你需要从干线的所有更改同步到您的分支。你只合并R325,所以就合并R280-r324和这样做后,你应该罚款使用--reintegrate

其他提示

我们为这个问题苦苦挣扎了几个星期,终于解决了。

在我们的例子中,我们工作的分支每天都会与所有主干修订合并。当我们尝试重新集成它(合并回主干)时,我们收到了此错误。当我们尝试将缺失的范围合并到我们的分支时,我们收到消息说没有任何内容可以合并。它发生在几个不相关的分支以及不同的文件和文件夹中。

解决方案是将缺少的范围添加到我们分支中文件或文件夹的 svn:mergeinfo 属性中。

对于每个“缺失范围:您收到的消息中的路径:revision_range”行:

  • 编辑 中提到的文件/文件夹中的 svn:mergeinfo 属性 合并后的分支
  • 附加以下内容:属性值末尾的字符串(例如/主干/图像/测试:280-324)
  • 保存 SVN 属性

提交所有更改并再次重新集成

我有这个问题,并最终由对一个文件夹的错误SVN特性在我的分支造成的。

解决方案很容易 - 我从主干合并到我的分支使用已经报失踪e.g,具体版本号

和然后指定只记录合并e.g。

此动作正确地把我分支成符合躯干,和我的后续分支重返主干顺利工作,而不会丢失范围错误消息。

此技术避免任何SVN的任何手工编辑:对任何文件/文件夹的属性合并信息

当我开始使用 svn merge 命令的 -r 选项时,我不再遇到这些问题,并且直到我在没有它的情况下合并之后才尝试执行 --reintegrate 。我使用的是 svn 1.6.1。

这就是我所做的:
1.当从分支合并到主干或从主干合并到分支时,我使用 -r 选项,如下所示:

 cd branchWorkArea/topDir
 svn merge -r<branchPoint>:HEAD [otheroptions] svn://svn/project/trunk/topDir
  1. 当我解决了任何冲突并测试我的代码时,我将合并提交到分支,然后使用相同的基本选项(特别是 -rBranchPoint:HEAD)将分支合并到主干

  2. 当主干经过测试并提交后,我使用 --reintegrate 选项来关闭分支。确保您也使用了 -rbranchPoint:HEAD 选项。

对于其他选项,我总是使用

--depth infinity(默认值 在 1.6.2 中到无穷大,但不是之前)
-x -b -x -w --ignore-eol-style

也许,我只是运气好,但事情似乎确实进展得更好。

要找到分支的分支点,您可以执行 svn log --stop-on-copy 然后查看最后的修订版 - 它将是创建分支的 svn 副本。

要在 Linux 上执行此操作,我会执行以下操作:

svn 日志 --stop-on-copy svn://svn/project/trunk/topDir |
grep '^r' |尾部 -1 | sed -e 's/^r//1'-e 's/ .*//g'

这应该打印分支点的修订号。

祝你好运

:此不是一个答案,但澄清问题。

我的错误信息是:

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

我合并使用所提供的解决方案的修订 @格雷格Trevellick,仍然得到的错误消息。

当我打开的svn:合并信息通过schemas文件夹@pako以下答案属性,内容看起来像

/branches/repos_develop_os/trunk_branch-os/schemas:3329
/trunk/schemas:2669-2673,2682,2720,2736,2878,2960,3003,3057

我不知道我应该如何修改这个内容。它看起来像失踪的范围都在那里。

我只是有这个问题,什么工作对我来说是首先的,同步与主干分支,从而使分公司可以从主干上的最新更新。在此之后,我试图重新整合该处到躯干和工作得很好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top