如何在不恢复的情况下撤消Subversion(svn)合并?

时间:2015-02-05 15:38:19

标签: svn

在尝试帮助同事找出某些单元测试在svn历史中变坏的时候,我匆匆地将我认为可能存在问题的提交合并到他的工作副本中:

 svn merge -c -1234 .
然后问道,"等等......你的工作副本干净了吗?"。不幸的是。所以快速恢复并不是一个好选择。我试图彻底撤消它(svn merge -c 1234)但没有发生任何事情。幸运的是,他确切知道哪些文件已被更改,因此我们制作了补丁,还原了所有已修改的文件,并应用了补丁。但是,我想知道是否有更清洁的方法摆脱这种情况。

2 个答案:

答案 0 :(得分:1)

你最初的想法几乎是正确的。 Subversion的方法是

svn merge -c 1234 . --ignore-ancestry

重新应用反向合并提交。

答案 1 :(得分:0)

我意识到svn merge -c 1234不起作用的原因是我们已经超出了修订版1234,所以svn认为没有必要做任何事情。我之后在办公桌上尝试的解决方案是下载提交1234的差异,然后将其应用为补丁。请注意,我使用了1234而不是-1234,这本来是反向差异。

svn diff -c 1234 > undo.patch
svn patch undo.patch

如果我再次处于原始状态,这将彻底撤消反向合并,同时保留我的同事的变化。