pak*_*ako 26 svn merge branch trunk svn-reintegrate
我正在尝试将开发分支重新集成到我的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
...
Run Code Online (Sandbox Code Playgroud)
然后该消息继续抱怨我的项目中的一些文件夹.但是当我尝试将更改从主干再次合并到开发分支时,TortoiseSVN告诉我没有什么可以合并(因为我之前已经合并了所有更改):
Command: Merging revisions 1-HEAD of https://dev/svn/trunk into C:\devel, respecting ancestry
Completed: C:\devel
Run Code Online (Sandbox Code Playgroud)
我正在尝试按照这里的说明:http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html,但没有解决这样的问题.
有任何想法吗?也许我应该删除主干然后复制我的分支?但我不确定它是否安全.
小智 27
我们在这个问题上奋斗了几个星期,我们终于解决了.
在我们的案例中,我们每天都在与所有主干版本合并的分支机构上工作.当我们尝试重新集成它(合并回主干)时,我们遇到了这个错误.当我们尝试将缺失的范围合并到我们的分支时,我们得到消息说没有什么可以合并.它发生在几个不相关的分支和不同的文件和文件夹.
解决方案是将缺少的范围添加到我们分支中的文件或文件夹的svn:mergeinfo属性.
对于您收到的消息中的每个"Missing ranges:path:revision_range"行:
提交所有更改并重新进行重新集成
Pet*_*ker 26
您必须首先将修订版r280到r324从trunk合并到您的分支中.
您似乎已将r325合并到您的分支中,但是--reintegrate需要将所有修订版本合并到最新版本.必须没有差距.所以这里有一点Diag:
+----------------------> /branches/devel
/ / \<--merge not working!
--------/-------+--+---+-----+---------> trunk
| \ | / |
280 \ V / 325
V
missing sync merges from trunk to branch
Run Code Online (Sandbox Code Playgroud)
我认为这是你的分支结构,所以你需要同步从trunk到你的分支的所有变化.你只合并了r325,所以只需合并r280-r324,这样做之后你应该可以使用--reintegrate
Gre*_*ick 11
我有这个问题,它最终是由我的分支中的文件夹的错误SVN属性引起的.
解决方案很简单 - 我使用已报告为缺失的特定修订号从干线合并到我的分支
然后指定仅记录合并,例如
这个动作正确地使我的分支与trunk一致,我的后续分支重新集成到trunk中成功运行,没有遗漏范围错误消息.
此技术避免了对任何文件/文件夹的任何svn:mergeinfo属性的任何手动编辑.
当我开始使用 svn merge 命令的 -r 选项时,我不再遇到这些问题,并且直到我在没有它的情况下合并之后才尝试执行 --reintegrate 。我使用的是 svn 1.6.1。
这就是我所做的:
1. 当从分支合并到主干或从主干合并到分支时,我使用 -r 选项,如下所示:
cd branchWorkArea/topDir
svn merge -r<branchPoint>:HEAD [otheroptions] svn://svn/project/trunk/topDir
Run Code Online (Sandbox Code Playgroud)
当我解决了任何冲突并测试我的代码时,我将合并提交到分支,然后使用相同的基本选项(尤其是 -rBranchPoint:HEAD)将分支合并到主干
当主干经过测试并提交后,我使用 --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 | svn log --stop-on-copy svn://svn/project/trunk/topDir |
grep '^r' | 尾部-1 | sed -e 's/^r//1' -e 's/.*//g'
这应该打印分支点的修订号。
祝你好运
归档时间: |
|
查看次数: |
29109 次 |
最近记录: |