我正在尝试将 svn 转储文件加载到我的 RHEL 服务器上。转储文件是从我们旧的 Ubuntu 服务器加载的,我使用了svnadmin create reponame
然后svnadmin load --quiet reponame < dumpfilename
。
过了一会儿,我收到以下消息:
svnadmin: Checksum mismatch,
file '/images/lang_cards/large/2001_Lang_Valentines_inside_large.jpg':
expected: 97b1f37b81463ac88a3c2c18abfbb329
actual: 944edbcc7684cb736eca5ed2c0d1c12c
我怎样才能绕过这个错误并继续加载转储文件?
谢谢!
答案1
可能性包括损坏的存储库、传输过程中损坏的转储文件或手动编辑的转储文件(尝试更改路径……?)。
如果您尝试更改路径,也许任何修补都会贪婪地触及修订内容,而不仅仅是修订条目标题。
如果您无法重新转储并重试(或者这样做会出现同样的问题),请尝试使用 svndumpfilter 排除该文件以及任何有问题的其他文件。
要恢复这些文件,您可以非常小心地修补转储文件以获得正确的校验和(Text-content-md5?但验证文件没有损坏),或者从签出/工作副本中获取它们(或从转储中的文本和增量中提取和重建)。
答案2
使用以下方法过滤转储后出现此问题https://github.com/jasperlee108/svndumpfilterIN
已删除 md5 校验和:
sed -i '/Text-copy-source-md5/d' your.dmp
然而,可能会产生一些后果...
答案3
我建议使用svndumptool 脚本
check
使用命令验证转储- 修复特定于平台的行尾(
eolfix
)并生成正确的校验和 - 或转储
split
merge
- 以及更多
在您的特定情况下,该命令sanitize
应该会修复转储中的校验和。但随后需要对加载的存储库内容进行深入检查。
这确实是高级 Subversion 存储库转储操作的必备工具。