如何强制SVN将指定版本范围的改动合并到当前工作副本中?
SVN 重复合并无响应解决方案
问题原因
你对SVN合并机制的理解是正确的。SVN内置合并跟踪功能,第一次执行合并命令时,会将28537:28979这个修订范围记录到工作副本的svn:mergeinfo属性中。你执行svn revert -R .仅回滚了文件内容的改动,若svn:mergeinfo属性的改动未被同步回滚,SVN就会判定该范围的修订已经完成合并,第二次执行相同命令时不会再引入改动。
解决方案
方案1:强制合并
直接在原有合并命令中添加--force参数,忽略已有的合并跟踪记录,强制重新应用对应修订范围的改动:
svn merge -r 28537:28979 --accept postpone --force svn+vm-ssh://svn.example.com/svn/repos/dev/dev7 .
方案2:清除合并记录后再合并
如果方案1不生效,可以先执行反向合并仅清除对应修订范围的合并记录,该操作不会修改任何本地文件内容,仅调整svn:mergeinfo属性:
svn merge -r 28979:28537 --record-only svn+vm-ssh://svn.example.com/svn/repos/dev/dev7 .
执行完成后再运行你原来的合并命令,即可正常拉取对应范围的改动。
注意事项
- 合并前执行
svn status确认工作副本没有未提交的改动,且已经更新到dev6分支的最新版本,避免产生不必要的冲突。 - 合并完成后执行
svn diff检查改动是否符合预期,确认无误后再提交到仓库。
内容的提问来源于stack exchange,提问作者osullic
相关产品推荐
相关产品推荐

