当我们使用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.dump
和test.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版本库中留下痕迹。