在svn分支进行开发是最常见的,主干和生产始终保持版本一直,如果生产需要临时修复则直接在主干进行修改测试提交即可,所以主干进行版本提交也是很常见的事情,但是在分支功能开发完成后将分支合并主干的时候就会出版本丢失问题
错误提示:
Error:svn: E195016: Reintegrate can only be used if revisions 8893 through 9534 were previously merged from svn://192.168.1.124/SRC_APP/trunks/master to the reintegrate source, but this is not the case:
SRC_APP/branch/whl_1.6.1/whl_1.6.1
Missing ranges: /SRC_APP/trunks/master:8910,8927,8940,8951,8970,8980-8981
查看svn版本更新日志,发现8910,8927,8940,8951,8970,8980-8981均为复制出分支之后又在主干上进行提交的版本
查看国外论坛,有人给出以下评论
You have to merge the revisions r280 to r324 from trunk into your branch first.
It seems you already merged r325 into your branch, however --reintegrate needs to get all revisions up to your latest revision merged. There must be no gap. So here a little Diag:
+----------------------> /branches/devel
/ / \<--merge not working!
--------/-------+--+---+-----+---------> trunk
| \ | / |
280 \ V / 325
V
missing sync merges from trunk to branch
I think this is your branch structure, so you need to sync all changes from trunk to your branch. You only merged r325, so just merge r280-r324 and after doing this you should be fine to use --reintegrate
意思大概就是说,从主干版本280拉出来分支,进行修改,同时主干版本已提交多次,变为325,此时要从分支合并到主干,中间错过了好几个版本,因此无法合并,可以先将主干之后修改的版本合并到分支,然后再将分支合并至主干应该可以解决问题
解决方案:
首先在分支中找到遗失的版本进行同步处理,
1、在分支项目中配置主干版本进行同步
2、选择(SELECT WITH PRE-FILTER)
3、勾选分支为找到的版本进行处理
应用并解决冲突后提交相应文件,然后再同步所有,就会发现又一个错误出现,提示费最新版本需要首先进行更新操作
更新之后再对分支合并主干同步所有,提交
最后
再主干项目中对该分支进行合并,合并一切顺利,之前Missing version异常不复存在