撤销Subversion最近一次SVN提交

12/15/2012

首先,挺忙的,好久没更新日志了。最近Kaijia用Netbeans将项目导入到Subversion资源库时意外没有选择trunk文件夹,结果就是资料库的根目录下悲剧地出现了一个“PROJECT”文件夹并且多了一次无意义的提交。

于是便Google到了撤销这次SVN提交的方法(注:原文中的方法仅适用于Windows系统)。以下方法使用于Linux。当然,在操作前你应该首先冻结Repo以避免其他人在恢复时进行提交(幸运的是,这次出意外的Repo在本地,所有不用考虑这一点)。

首先通过SSH或Shell切换到SVN根目录所在文件夹,然后使用svnadmin dump命令导出之前的数据,并且通过-r参数移除最近一次提交的内容,例如最近一次提交的版本号是10,-r的参数就应该是“-r1:9”,在命令行中运行:

这个方法的原理就是现将之前的数据导出,去掉最新的一次提交,再将数据导入到新的资料库中,这样最后一次SVN提交就被撤销了。