svnadmin: Svndiff 包含一个太大的窗口

标签 svn svnadmin

当我尝试加载/恢复我的 SVN 存储库时,出现错误:

svnadmin: Svndiff contains a too large window

我该如何解决?

最佳答案

自从我今天遇到这个...

您的 FSFS 数据库的 svn 存储库中可能存在损坏的修订。

备份您的 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 trunk 获取 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 验证。对任何进一步的错误修改重复上述过程。

一旦你有一个经过验证的存储库,你可以通过运行重新打包

./fsfs-reshard.py ${REPO} 1000

再次运行 svnadmin 验证!

您的 SVN 存储库应该没问题!

关于svnadmin: Svndiff 包含一个太大的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734007/

相关文章:

svn - svn diff数据解压失败

svn: E160043: '1' 和 '4' 之间的预期 FS 格式;找到格式 '6'

svn - SVN 拉取请求可以和 GIT 一样吗?

linux - 用于颠覆的 svndumpfilter > 1.7

svn - Subversion 存储库中的 '/db/txn-current' 为空或不存在

svn - SVN/Subversion 1.7和Eclipse Subversive&JavaHL

svn - 如何svn转储特定文件夹并将其加载到特定位置

sqlite - TortoiseSVN 结账 - "sqlite disk i/o error (S10)"

svn - 基石与 Mac OS X 版本

svn - 在 emacs 中查看 svn 项目