SVN: E200030:数据库磁盘映像格式不正确



偶尔我会尝试提交文件并收到错误:

Transmitting file data .svn: E200030: Commit failed (details follow):
svn: E200030: database disk image is malformed

此答案建议运行以下命令:

$ sqlite3 .svn/wc.db "pragma integrity_check"

我这样做并简单地得到以下内容:

ok

相同的答案建议将新副本签出到其他目录中,而不是将.svn目录复制回当前目录。我也尝试了这个,但得到同样的错误:

$ svn co $URL /tmp/svn-tmp
$ rm -rf .svn
$ cp -r /tmp/svn-tmp/.svn .
$ svn ci -F svn-commit.txt
Transmitting file data .svn: E200030: Commit failed (details follow):
svn: E200030: database disk image is malformed

通常可以将问题追踪到我尝试提交的单个文件,并且通常需要删除或替换该文件中的单个字符;通常是空格。即使文件只在OS X和Linux上编辑,而不是Windows上,也会发生这种情况。此问题发生在不同的系统和不同版本的SVN(1.7和1.8)上。

最近我注意到,如果我尝试在两个不同的系统(一个OS X,一个Linux)和两个不同版本的SVN(分别为1.8和1.7)上对同一文件(一个包.json)进行相同的更改(将数字3替换为数字4),两种情况都会出现问题。

我还能做些什么来尝试诊断这些问题吗?

这在之前已经问过:

SVN 清理:SQLite:数据库磁盘映像格式不正确

答案是:

对跟踪 存储库 (/.svn/wc.db):

sqlite3 .svn/wc.db "pragma integrity_check"

这应该报告一些错误。

然后,您可以通过执行以下操作来清理它们:

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

如果之后仍有错误,您仍然可以选择 将存储库的新副本签出到临时文件夹,然后 将 .svn 文件夹从新副本复制到旧副本。然后旧的 复制应该再次工作,您可以删除临时文件夹。

最新更新