将svn文件夹还原到以前的版本

要将SVN中的特定文件夹恢复到之前的状态,我现在使用以下命令:

svn rm folder svn commit -m 'removed folder to revert to previous version' svn co http://pathto/repo/folder@268 cd folder rm -rf .svn //recursively if many folders svn add folder svn commit -am 'reverted to the previous version' 

看起来太麻烦了,应该是一个相当常见的用例。 我一定是做错了。 你还能怎么做呢?

为什么不使用svn merge

假设您想要从当前HEAD(上次提交)版本恢复到版本268:

 cd folder svn up svn merge -r HEAD:268 . 

然后手动解决任何冲突(如果没有本地更改,则不应有任何冲突),并且:

 svn commit -m "- reverted to revision 268" 

要恢复单个更改(例如在修订版666中进行):

 cd folder svn merge -c -666 . 

恢复本地更改(尚未提交):

 cd folder svn revert -R . 

您可以使用svn merge执行此任务,请参阅http://svnbook.red-bean.com/en/1.1/ch04s04.html#svn-ch-4-sect-4.2

为什么不使用'svn merge'? 这就是为什么:“然后手动解决任何冲突[..]”

如果我知道修订版268中的“文件夹”包含我想继续使用的一致性数据,为什么会自动创build具有潜在不一致数据的合并,以便稍后手动删除这些更改。 这很容易出错,并破坏了我的configurationpipe理工具的用途。

也就是说,我更喜欢从原来的要求配方略有改善。 如果您使用'svn export'来获取旧版本,则不必删除.svn文件:

 svn rm folder svn commit -m 'removed folder to revert to previous version' . svn export -r 268 http://pathto/repo/folder svn add folder svn commit -m 'reverted to the previous version' folder 

你也可以使用

 svn revert folder/* 

这将恢复文件folder下的所有folder