当我尝试加载/恢复我的 SVN 存储库时,出现错误:
我该如何解决这个问题?
最佳答案
自从我今天遇到了这个......
您的 svn 存储库中的 FSFS 数据库可能存在损坏的修订版。
备份您的 SVN 存储库。
通过读取 ${REPO}/db/format 确定您的存储库是否已打包/分片
[root@chi2 db]# cat format
4
layout linear
如果您的 fsfs 数据库是“布局分片”,您需要从这里获取 fsfs-reshard.py:
http://ymartin59.free.fr/wordpress/wp-content/2010/07/fsfs-reshard.py
(这个版本适用于 1.6+ 更大的存储库,这个人的补丁还没有移植到 svn trunk 上)。
运行以下命令解压存储库:
./fsfs-reshard.py ${REPO} 0
运行验证:
svnadmin verify ${REPO}
* Verified revision 13689.
* Verified revision 13690.
* Verified revision 13691.
svnadmin: E185001: Svndiff contains a too-large window
错误的修订版是比上次经过验证的修订版大的修订版 1,我们的坏修订版是 13692。
从 Subversion 主干获取 fsfsverify.py。 http://svn.apache.org/repos/asf/subversion/trunk/contrib/server-side/fsfsverify.py
在错误的修订版上运行 fsfsverify.py。您可能需要运行 -f 选项两次或更多次。这将吐出大量数据,但最终它应该是干净的。
[root@chi2 archive]# ./fsfsverify.py -f ${REPO}/db/revs/13692
Copy 4640123 bytes from offset 1006867
Write 4640123 bytes at offset 1003542
Fixed? :-) Re-run fsfsverify without the -f option
[root@chi2 archive]# ./fsfsverify.py ${REPO}/db/revs/13692
再次运行 svnadmin verify。对任何进一步的错误修订重复上述过程。
拥有经过验证的存储库后,您可以通过运行重新打包
./fsfs-reshard.py ${REPO} 1000
再次运行 svnadmin verify !
您的 SVN 存储库应该没问题!
关于svnadmin: Svndiff 包含一个太大的窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3734007/