使用Tortoise 1.6的SVN分支机构。我一直在定期将主干合并到分支中以使其保持最新状态。
今天,我以为我会重新融入分支机构。我从Tortoise选择了“重新整合分支”并收到以下错误消息:
重新整合只能在以前将版本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的日志中有这个
操作:添加路径:/ branches / qst从路径复制:/ trunk
对我来说,该错误消息表明该分支最初并非来自主干,这不是真的。
有什么想法吗?
答案 0 :(得分:125)
如果您正在分支机构并且一直在与其他人一起工作,那么当您创建主干的工作副本并尝试重新集成您的分支时,如果您收到类似这样的消息,则可能会感到困惑:< / p>
$ 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
我在谷歌上看过很多变通办法,但是他们让我感到紧张,因为“黑客”。为了解决这个问题,我决定做一下subversion在消息中暗示的内容。我回到我的分支并明确合并了指定的修订:
$ 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.
一旦我这样做了,我就可以回到trunk的工作副本并重新整合分支而没有任何问题。
我希望这会有所帮助
答案 1 :(得分:85)
[[虽然我的解决方案过去对我有用,但它可能导致现代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 ...
完成此操作后,我的合并执行正常。
答案 2 :(得分:15)
如果您尝试将分支重新集成到主干,并且您在TortoiseSVN中看到如下错误:
单击错误文本并按 CTRL + A , CTRL + 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'.
与Gray's answer一样,现在您应该将更改提交到分支并尝试重新集成。这次它应该工作!
答案 3 :(得分:11)
实际上我使用“合并两个不同的分支”选项来修复它,将主干和分支合并到我的工作副本中。然后我把它交给了行李箱。
非凡
答案 4 :(得分:5)
答案 5 :(得分:3)
正如SVN告诉你的那样。
答案 6 :(得分:1)
另请参阅我的回答here,了解我对类似案例的体验。我不确定这是否是您的问题的根源,但是当两个更改相互抵消时,Subversion 1.8看起来似乎与mergeinfo有问题。
答案 7 :(得分:0)
我遇到了这个问题。我在我的分支上做了一个SVN日志,发现我已经将trunk合并到我的分支。
我注意到了所有的修改。
然后我通过手动指定修订版将我的分支合并到trunk。我指定所有范围以排除修改我合并后备箱。我设法将我的分支合并。
我必须在mergeinfo上做一些恢复,但是我把代码合并了。
我立即删除了我的分支。
答案 8 :(得分:0)
在使用分支的部分检出后,出现此错误。我正在使分支与主干保持最新,但是分支中未被检出的部分的主干修订当然不会被更新。解决方法是对分支进行全面检出,然后合并所有主干更改。将这些提交到分支后,我可以将分支成功合并到主干。
答案 9 :(得分:0)
解决此问题
右键单击要合并的分支(但收到此消息),然后选择“更新至修订版”选项,然后在打开的对话框中(以下屏幕截图)选择这些修订版,然后单击“确定”-单击所有先前的修订版被合并,您将不会收到此消息
在此处添加此内容可帮助使用Tortoise SVN的人
答案 10 :(得分:-1)
我知道这是一篇过时的文章,但是直到发现错误消息中列出的文件都存在SVN属性问题为止,我也在努力解决此问题。
我确实右键单击了有问题的文件:TortoiseSVN>属性,发现该文件有两个svn:mergeinfo,其中一个没有继承自数据。因此,我删除了该mergeinfo。
我使用TortoiseSVN 1.12.2,内部版本28653-64位。