svn dump 失败后的处理

来源:互联网 发布:阿里云服务器ip地址 编辑:程序博客网 时间:2024/06/05 02:14
转载:http://blog.sonitech.org/2010/04/15/svn-dump-%E5%A4%B1%E8%B4%A5%E5%90%8E%E7%9A%84%E5%A4%84%E7%90%86/

本文由 svndump 失败而引出:

在 SVN Server 中有一个版本 dump 失败,后来尝试使用 fsfsverify(http://www.szakmeister.net/fsfsverify/)也没有修复成功,与之相关联的版本同样 dump 出错,最后用 svndumpfilter 解决。

思路:
1. 尽可能 export 出受损坏的 Project 的最新版本,或者备份本地最新的代码。(这次坏掉的版本是很早之前的版本,新代码已经与之没有任何关系,只是 dump 校验时失败)
2. 在 dump 时过滤掉坏版本所在的 project,然后重建 SVN Server,load 之前 dump 出的文件。
3. load 后把之前 export 出的 Project 重新 add 进 SVN 库中。

相关的操作:
1. export 出需要的 Project,最新版本号 10000:

svn export -q  -r10000 http://svn.domain.com/svn/projects/applications/project_name

2. dump 并过滤掉与坏掉的 project(参数参考:http://www.subversion.org.cn/svnbook/1.4/svn.reposadmin.maint.html#svn.reposadmin.maint.tk):

svnadmin dump --incremental -r 0:10000 /var/lib/subversion/repositories |svndumpfilter exclude /projects/applications/project_name --preserve-revprops > repositories_0-10000.dump

3. 导入到新的版本库中:
svnadmin load /var/lib/subversion/new_repositories < repositories_0-10000.dump

4. 最后重新将 /projects/applications/project_name add 进 SVN Server 即可。

现在看起来很简单的步骤就可以搞定,但是在处理的时候磕磕绊绊很长时间才解决,开始的时候总想修复坏掉的版本,尝试了很多歪门邪道的办法,甚至去手动修改过 svn revs 中的 md5,无奈 subversion 实在太复杂,只能用这个办法解决,最后感谢7哥 的提醒,用 svndumpfilter 解决了这个头痛的问题。   

0 0