SVN仓库版本回退

当我们使用SVN增理备份和恢复时,如果不小心使用svnadmin load错了版本时,需要先装load错的版本删了再重新load正确的版本。查询过svnadmin 的命令,貌似没有发现删除或回退指定版本相关的命令,但是我们可以直接删改文件来实现这个功能。

例如

我们要load的dump文件有

  • test.0-10.dump
  • test.11-15.dump
  • test.16-25.dump

由于操作失败,我们load test.0-10.dump后直接load了test.16-25.dump

svnadmin load test < test.0-10.dump
svnadmin load test < test.16-25.dump

这时候在load完 test.16-25.dump时会有如下提示

Committed new rev 11(loaded from original rev 16) >>>

此时查看svn show log会发现原来的16-25的版本号改为了11-20,直接跳过了11-15的版本号。如果再load 11-15的话就会装版本号的顺序弄反,导致仓库数据出错。

此时我们需要先删除仓库中的11-20版本,再重新依次load test.11-15.dumptest.16-25.dump

操作

  • 1、进入test仓库的db目录,删除rep-cache.db缓存数据文件
  • 2、修改current个文件,将版本号改为10
  • 3、删除db/revs/0/目录下10~20文件
  • 4、删除db/revprops/0/目录下10~20文件

回滚完成了,这时候可以重新load正确的版本了。

svnadmin load test < test.11-15.dump
svnadmin load test < test.16-25.dump

题外话

这种操作也可以删除svn仓库中的指定版本,彻底的毁尸灭迹,不在svn版本库中留下痕迹。

0%