如何解决“汞验证”显示的“完整性错误”

时间:2019-06-15 10:52:45

标签: mercurial corruption verify

我有一个共享存储库,hg verify揭示了一个非常旧的变更集(@ 2445)引起的七个问题。

无法修复存储库,如所述 在下面详细介绍,我将不胜感激 有关修复的任何建议。

请注意,我已成功使用“ hg convert”创建了一个通过hg verify测试的新存储库,但当然可以进行修订 散列都是不同的,因此这并不是解决问题的办法 位于bitbucket上且已克隆的“损坏的”存储库。

问题描述

bitbucket上的存储库已克隆到两台计算机,一台 运行hg 4.7.2,另一个运行hg 5.0.1。

在hg 4.7.2机器上的克隆从未出现任何明显的问题, 但是另一方面,升级到hg 5.0.1导致我运行“ hg verify”, 揭示了两台机器上相同的7个错误。

(在hg 5.0.1机器上,已识别出涉及“ fncache”的其他问题,但它们超出了此问题的范围。)

这7个错误已在“汞验证”部分中标识 输出开始:

crosschecking files in changesets and manifests
checking files

第一条错误消息是:

MI/MI_s15/all/done@2445: dbb0190415fa not in manifests

和其他所有引用相同的本地版本“ @ 2445”。

“ hg verify”输出的最后一行是:

(first damaged changeset appears to be 2445)

尝试维修

以下尝试均无法解决这些问题:

a)hg debugrebuildstate -r提示

b)hg debugrebuildfncache#失败,并出现以下解释:“(不重建fncache,因为存储库不支持fncache)”

c)在hg 5.0.1机器上的新目录中,将存储库从其主目录克隆到bitbucket上无济于事。

d)在上面(c)中创建的新克隆的存储库中:

hg strip --rev 2444
hg pull -u
# `hg verify` shows the same 7 errors
hg debugrebuildfncache # now succeeds
# `hg verify` shows the same 7 errors

类似的尝试同样失败了。

调试索引

以防万一:

   $ hg debugindex MI/MI_s15/all/done
   rev linkrev nodeid       p1           p2
     0    1337 b5d33daadd43 000000000000 000000000000
     1    2445 dbb0190415fa 000000000000 000000000000

0 个答案:

没有答案