如何重新应用已回滚到先前版本的变更集?当然,我会使用另一个与所需修订版本合并,但该命令似乎是一个无操作 - 没有合并,并且svn status在合并后没有显示任何更改.我发现这样做的唯一方法是使用该--ignore-ancestry选项,但它似乎并不正确.
我尝试做的是以下内容:
1000trunk来回滚到修订版500branches/rollbacksvn merge -r HEAD:500 .700,我们试图通过执行来完成svn merge -c 700 ^/trunk .,但这不起作用(实际上:什么都不做)--ignore-ancestry选项添加到上一个命令,它会执行我们想要的操作,但感觉不对.trunk集成到处于所需状态的分支:修订501-1000回滚,修订版700重新应用.有任何想法吗?
- 存储库位于修订版1000
- 我们首先通过创建分支分支/回滚然后执行svn merge -r HEAD:500来回滚到版本500.在WC分行
好的,我不是在这里理解一些东西.为什么不简单:
$ svn cp -r500 $REPO/trunk@500 $REPO/branches/rollback
Run Code Online (Sandbox Code Playgroud)
这将创建一个rollback与trunk中的版本500匹配的分支版本.
- 之后我们想重新应用修订版700的变更集,我们试图通过执行来完成
svn merge -c 700 ^/trunk,但这不起作用(实际上:什么都不做)
如果您在回滚分支的工作副本上执行此操作:
$ svn merge -c 700
Run Code Online (Sandbox Code Playgroud)
如果在您的分支的工作副本中包含修订版700.这不起作用的原因是svn:mergeinfo说修订版700已经在回滚分支中,因此Subversion不会重新应用它.svn:mergeinfo不受反向合并的影响,因此修订501到1000的回滚不会影响svn:mergeinfo.
- 如果我们将--ignore-ancestry选项添加到上一个命令,它会按我们的意愿执行,但感觉不对.
以下是Subversion书中所说的内容--ignore-ancestry:
--ignore-ancestry选项可防止合并跟踪,从而忽略mergeinfo,既不考虑也不记录.
因此,当您使用时--ignore-ancestry,Subversion会合并修订版700,无论它是否已应用.
- 然后,我们将分支重新集成到主干以使其处于所需状态:修订501-1000回滚,修订版700重新应用.
我不确定重返社会会在这一点上做什么.没有什么可以整合,因为有关于回滚分支本身没有真正的改变.回滚分支上的所有更改都是在主干中发生的更改.
它的用途是重新整合将进行双向合并,这将迫使主干匹配分支.但是,Subversion版本1.6或1.7中已经弃用了重新集成(我忘记了).你试图使用这个--reintegration开关,Subversion会抱怨.我不能说Subversion在这种情况下会做什么.
如果你只想回滚trunk,rollback trunk:
$ svn co $REPO/trunk
$ cd trunk
$ svn merge -r1000:701 . # Rolls back revisions 701 to 1000
$ svn merge -r699:500 . # Rolls back revisions 500 to 699
$ svn commit -m" Removed all changes since Rev 500 except 700"
Run Code Online (Sandbox Code Playgroud)
您可以自动执行此操作,并分别回滚和提交每个修订.这样,如果您决定重新应用某个更改,您可以反向合并执行原始反向合并的反向合并修订,并且... ...好的,一个示例:
for revision in {1000..500}
do
[[ $revision -eq 700 ]] && continue # Skip Revision #700
svn merge -c -$revision
svn commit -m "Backing out Revision $revision"
done
Run Code Online (Sandbox Code Playgroud)
假设你现在决定将版本823包含在主干中.你做了一个svn log看到:
------------------------------------------------------------------------
r1230 | mike | ......
Backing out Revision 823
Run Code Online (Sandbox Code Playgroud)
您现在知道修订版1230已在您的仓库中退出了修订版823.所以...
$ svn merge -c -1230
Run Code Online (Sandbox Code Playgroud)
这将删除修订版1230所做的更改 - 这是对版本823的修订.因此,在您提交更改后,修订版823现在又回到了回购中.
您可以编辑svn:mergeinfo以使用正确的修订范围进行修复.但是,不强烈建议手动修改此属性.一个错误,您的合并历史将不再有效.
通常情况下,如果我们发现我们已经把所有事情搞糟了,我们只需要创建一个分支并使用它.
| 归档时间: |
|
| 查看次数: |
1216 次 |
| 最近记录: |