代码之家  ›  专栏  ›  技术社区  ›  lprsd

将SVN文件夹还原为以前的版本

  •  45
  • lprsd  · 技术社区  · 15 年前

    要将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'
    

    对于一个相当常见的用例来说,似乎有太多的麻烦。我一定是做错了。你还能怎么做?

    4 回复  |  直到 10 年前
        1
  •  89
  •   Ric Jacek Konieczny    10 年前

    为什么不使用 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 .
    
        2
  •  1
  •   Thomas Schaub    15 年前

    你可以使用 svn merge 有关此任务,请参见 http://svnbook.red-bean.com/en/1.1/ch04s04.html#svn-ch-4-sect-4.2 举个例子

        3
  •  1
  •   user2451680    12 年前

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

    如果我知道268版的“文件夹”中包含了我想继续使用的一致数据,那么为什么要自动创建一个合并,其中包含可能不一致的数据,只是在以后手动删除这些更改。它很容易出错,并破坏了我的配置管理工具的目的。

    也就是说,我更喜欢原要求的菜谱,稍微改进一下。如果使用“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
    
        4
  •  0
  •   Sheetal T    10 年前

    你也可以用

    svn revert folder/*
    

    它将恢复下面的所有文件 folder