将SVN回滚到以前的版本而不更新工作副本

时间:2014-03-12 13:49:39

标签: svn

是否可以在不先进行更新的情况下将SVN回滚到以前的版本?

修订版606很好。然后,在工作中,我做了一些有效删除大部分项目并将其提交到610的东西。现在,我在家里工作了606.通常的回滚方式如下:

svn update
svn merge -r 610:606
svn commit -m "rolled back to r606"

这将需要删除我的所有文件,然后重新下载整个项目。难道没有更好的方法吗?我想要这样的东西:

svn copy 606 611  # not real syntax; this is what I'd *like* to be able to do

澄清:存储库相当大,所以我试图在服务器端完全执行此操作(即,不通过网络传输整个内容)。

3 个答案:

答案 0 :(得分:0)

通过合并可以恢复提交,但也有缺点。

相反,如果可以,则将存储库转储到版本606并从转储中创建一个新的存储库。这样你就可以完全删除这些修订。显然,只有在没有其他提交必须保留的情况下才能实现。

答案 1 :(得分:0)

解决方案是删除整个内容,然后将旧版本复制到头部。通过在任何地方提供完整的URL,可以在服务器端完成删除和复制。请注意,使用svn copy时,您必须复制到父级(即svn copy …/a/b …/a/)。

svn delete https://…/repos/proj/subproj
svn copy https://…/repos/proj/subproj@606 https://…/repos/proj/ -m "…"

(如果有人建议在不重新加载整个项目的情况下采用另一种方法来做到这一点,我很乐意将其标记为答案。)

答案 2 :(得分:0)

您可以使用以下步骤将分支恢复为606修订版:

  1. svn merge --dry-run -r:610:606" branch-url"
  2. svn merge -r:610:606" branch-url"
  3. svn commit" revert to 606"