svn:E200030:数据库磁盘映像格式错误

时间:2016-07-17 13:59:40

标签: svn

有时我会尝试提交文件并收到错误:

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

This answer建议运行以下内容:

$ 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)和两个系统上进行相同的更改(将数字3替换为数字4)到同一个文件(package.json)不同版本的SVN(分别为1.8和1.7),在这两种情况下都会出现问题。

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

1 个答案:

答案 0 :(得分:1)

之前有人问过:

svn cleanup: sqlite: database disk image is malformed

答案是:

  

对sqlite数据库进行完整性检查以跟踪   存储库(/.svn/wc.db):

sqlite3 .svn/wc.db "pragma integrity_check"
     

那应该报告一些错误。

     

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

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

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