当我尝试加载/恢复我的 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/

10-12 22:40