SVN将以前的修订版合并到工作副本中

use*_*222 11 svn version-control merge

如果

  • 我正在修订版5的SVN分支机构.
  • 我做了一个更改,承诺创建修订版r6.
  • 当r6引入问题时,恢复为r5,并提交,创建r7
  • 继续在r7上工作,最终将更改提交到r10

如何将r6中所做的更改合并到我的工作副本中?

我试过了

svn merge -r5:6 .
Run Code Online (Sandbox Code Playgroud)

svn merge -r5:HEAD .
Run Code Online (Sandbox Code Playgroud)

两者似乎都无能为力.我究竟做错了什么?

小智 6

试试这个:

svn merge --ignore-ancestry -r5:6 .
Run Code Online (Sandbox Code Playgroud)

或使用更新的语法:

svn merge --ignore-ancestry -c6 .
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我建议您始终指定要使用的文件而不是"."


小智 5

如果您使用的是相对较新的svn版本,则可以使用:

svn merge -c -6 .
Run Code Online (Sandbox Code Playgroud)


(或您想要还原的特定文件,而不是'.')
这是以下的简写:

svn merge -r6:5 .
Run Code Online (Sandbox Code Playgroud)

因此,如果您使用较旧的subversion版本(1.6.x之前),则可以使用此语法.

这可能会将属性引入您的存储库(svn:mergeinfo,如果内存服务),至少如果您在整个目录上执行合并.将更改还原为单个文件或文件集不会影响属性.如果您不希望将这些属性添加到存储库中,则可能需要回退到补丁(自动或手动).


小智 2

我对命令行 svn 不太熟悉。但如果正确的用法不能给你带来你想要的结果,我会尝试:

  1. 根据修订版 r6 创建补丁(r6 和 r5 之间的差异)。
  2. 将其应用到工作副本上。