重新整合只能在修订 X 到 Y 之前从 < URL > 合并以重新整合源代码的情况下使用,但事实并非如此

我一直在用 Tortoise 1.6的 SVN 分支。我一直在定期地将主干合并到分支中,以保持它的最新状态。

今天,我想重新整合这个分支。我选择了乌龟的“重新整合一个分支”,并收到了以下错误消息:

重新整合只能用于修订4709至5019以前从 http://subversion/svn/saxdev/trunk合并到重新整合的来源,但这不是情况

然后列出了大约50个文件,描述如下:

Error: branches/qst/kobalt/sax/businessobjects/util/HistoryParent.java

Error: Missing ranges: /trunk/kobalt/sax/businessobjects/util/HistoryParent.java:4709-5018

5019版本是校长版本。 4737修订版是我创建分支时的修订版。

我从4737修订版的日志里找到了这个

操作: 添加路径:/分支/qst 从路径:/主干复制

对我来说,该错误消息表明该分支最初不是来自主干,这是不正确的。

有什么想法吗?

61694 次浏览

实际上,我使用“合并两个不同的分支”选项修复了它,将主干和分支合并到我的工作副本中。然后我把它放进了后备箱。

好极了

[[虽然我的解决方案在过去对我有效,但它可能导致现代 SVN 客户端的不正确结果。在我们的示例中,合并错误似乎是自动化的副产品,它混淆了我们的 SVN 历史,而不是真正的活动。我把这个留给子孙后代,但请考虑一下这个被接受的答案。]]

对我来说,解决方案是删除任何以某种方式附加到层次结构中的单个文件的 svn:mergeinfo属性。

svn merge --reintegrate svn+ssh://svn/usr/local/svn/repos/all/trunk
svn: Reintegrate can only be used if revisions 18765 through 18921 were
previously merged from svn+ssh://svn/usr/local/svn/repos/all/trunk to the
reintegrate source, but this is not the case:
trunk/proj/src/main/java/com/foo/furniture.java
Missing ranges: /trunk/proj/src/main/java/com/foo/furniture.java:18765-18920

要查找带有 mergeinfo 信息的文件,可以这样做:

cd ~/svn/branches/2.7
svn propget -R svn:mergeinfo .

然后您可以删除 mergeinfo 属性:

svn propdel svn:mergeinfo proj/src/main/java/com/foo/furniture.java ...
svn commit -m 'removed mergeinfo' proj/src/main/java/com/foo/furniture.java ...

在我完成这个之后,我的合并执行得很好。

如果你正在处理一个分支,并且一直在与其他工作保持同步,那么当你创建一个主干的工作副本并试图重新集成你的分支时,你可能会感到困惑,如果你得到一个类似下面的消息:

$ svn merge --reintegrate https://server.blah/source/orb/branches/bronze_services
svn: Reintegrate can only be used if revisions 650 through 694 were previously merged from
https://server.blah/source/orb/trunk to the reintegrate source, but this is not the
case:
branches/bronze_services/occl
Missing ranges: /trunk/occl:650-693

我在谷歌上看到了许多变通方法,但它们让我感到紧张,就像“黑客”一样。为了解决这个问题,我决定做颠覆在消息中暗示的事情。我回到我的分支,明确地合并了指定的修订版本:

$ svn merge -r 650:693 https://server.blah/source/orb/trunk
$ svn commit -m 'merged revisions 650:693 from trunk'
Sending        occl
Committed revision 695.

一旦我这样做了,我就能够返回到主干的工作副本并重新集成分支,没有任何问题。

希望这个能帮上忙

如果您尝试将分支重新集成到主干,并且在 TortoiseSVN 中看到如下错误:

Merge reintegrate test only failed!: "Reintegrate can only be used if some revisions were previously merged from trunk, but this is not the case"

单击错误文本并按 CTRL + ACTRL + C复制所有文本。

将文本粘贴到 PowerShell 脚本的 here-string 中:

@"
Command: Reintegrate merge http://svn.cloudcorp.com/branches/myproject into C:\Users\iain\Documents\Repositories\CloudCorp\trunk
Error: Reintegrate can only be used if revisions 18089 through 18612 were previously
Error:  merged from http://svn.corp.skyscanner.local/svn/SkyScannerDatabase/trunk to
Error:  the reintegrate source, but this is not the case:
Error:
Error:  branches/myproject/userdata/usermanagementservice
Error:
Error:     Missing ranges:
Error:  /trunk/userdata/usermanagementservice:18365,18404
Error:
Error:  branches/myproject/userdata/auto_create_db.sql
Error:
Error:     Missing ranges:
Error:  /trunk/userdata/auto_create_db.sql:18406
Error:
Error:
Error:  branches/myproject/userdata/create_audit_tables_triggers_uds.sql
Error:
Error:     Missing ranges:
Error:  /trunk/userdata/create_audit_tables_triggers_uds.sql:18406
"@ -split "`n" |
? { $_ -match ('Error: +branches') } |
% { $_.Substring($_.IndexOf('userdata')) } |
% { "svn propdel svn:mergeinfo $_" }

该脚本提取文件与问题 mergeinfo 的相对路径,并输出一个命令列表来修复每个命令。

您可能必须更改 'userdata'值以适应您的存储库结构。

执行脚本以输出删除问题 mergeinfos 所需的命令。

在这个示例中,脚本将生成以下输出:

svn propdel svn:mergeinfo userdata/usermanagementservice
svn propdel svn:mergeinfo userdata/auto_create_db.sql
svn propdel svn:mergeinfo userdata/create_audit_tables_triggers_uds.sql

在命令提示符下,您可以导航到分支库(myproject)并执行命令删除问题 mergeinfos。

您应该看到如下输出:

property 'svn:mergeinfo' deleted from 'userdata\usermanagementservice'.
property 'svn:mergeinfo' deleted from 'userdata\auto_create_db.sql'.
property 'svn:mergeinfo' deleted from 'userdata\create_audit_tables_triggers_uds.sql'.

与在 格雷的回答中一样,现在您应该将更改提交到分支并尝试再次重新集成。这次应该可以了!

也请参阅我的答案 给你为我的经验与类似的情况。我不知道这是否是你的问题的根源,但它确实看起来像 Subversion 1.8有问题的合并信息时,两个更改取消彼此。

按 SVN 说的做。

  1. 合并 SVN 告诉你的回归分支
  2. 从树枝到树干

我遇到了这个问题。我在我的分支上做了一个 SVN 日志,以查找是否已经将主干合并到了分支上。

我记下了所有的修改。

然后,我通过手动指定修订,将分支合并到主干。我指定了所有的范围,以排除修订,我合并了主干。我设法让我的分行合并了。

我在合并信息上做了一些恢复,但我把代码合并了。

我立即删除了我的分支。

在 Tortoise SVN 中,有些东西对我很有用: 不要从分支中合并所有的修订,而是选择特定的范围,然后手动从分支中选择所有的修订。

我在使用分支的部分签出后得到了这个错误。我使用主干保持分支的最新状态,但是没有检出的分支部分的主干修订当然没有被更新。修复的方法是对分支执行完整的签出,然后合并所有的主干更改。在将它们提交到分支之后,我可以成功地将分支合并到主干。

我知道这是一篇老文章,但是我一直在努力解决这个问题,直到我发现错误消息中列出的文件有 SVN 属性问题。

我右键单击了问题文件: TortoiseSVN > Properties,发现该文件有两个 svn: mergeinfo,其中一个没有从数据继承。所以我删除了合并信息。

我使用 TortoiseSVN 1.12.2,构建28653-64位。

穿上这个

  • TortoiseSVN 1.9.7,Build 27907-64 Bit2017/08/0819:34:38
  • Subversion 1.9.7,-release
  • 4月1.5.2
  • 直至1.5.4
  • 农奴制1.3.9
  • OpenSSL 1.0.2 l 2017年5月25日
  • Zlib 1.2.8
  • SQLite 3.14.1

右键点击你想要合并的分支(但是收到这条消息) ,选择“更新到修订版”,然后在打开的对话框中(截图如下)选择这些修订版,然后点击 OK-一旦所有以前的修订版合并,你就不会收到这条消息

enter image description here

在这里添加这个来帮助使用 TortoisSVN 的人