修复Mercurial中失败的完整性检查?
我只是在一个存储库上执行了修复Mercurial中失败的完整性检查?,mercurial,Mercurial,我只是在一个存储库上执行了hg pull,并引入了一些变更集。它说要运行hg update,所以我就这么做了。不幸的是,当我这样做时,它失败了,并显示以下错误消息: abort: integrity check failed on 00manifest.i:173! 当我运行hg verify时,它告诉我清单中没有的东西有很多问题(有一些轻微的路径模糊): 源存储库通过了hgverify测试 是否有任何方法可以从完整性检查失败中恢复,或者是否需要完全从源代码重新克隆存储库(在本例中这不是一个大
hg pull
,并引入了一些变更集。它说要运行hg update
,所以我就这么做了。不幸的是,当我这样做时,它失败了,并显示以下错误消息:
abort: integrity check failed on 00manifest.i:173!
当我运行hg verify
时,它告诉我清单中没有的东西有很多问题(有一些轻微的路径模糊):
源存储库通过了hgverify
测试
是否有任何方法可以从完整性检查失败中恢复,或者是否需要完全从源代码重新克隆存储库(在本例中这不是一个大问题)?我该怎么做才能导致这种情况,这样我就不会再这样做了?好吧,既然第一个损坏的变更集是170,您可以将本地存储库克隆到169,然后从源代码中提取。这意味着只需拉动5个变更集
hg clone -r 169 damagedrepo fixedrepo
cd fixedreop
hg verify
然后:
hg pull originalsource
至于手动恢复存储库损坏,我比我能做得更好。见第4节:
我曾经偶尔发现过腐败,尽管上面
文档说这通常是由于用户错误,我的实例在
具有空工作目录的可移动USB驱动器。有时事情
只是写得不正确或受到干扰:这是错误的
不总是用户错误。但我总是有多份我可以重新整理
从那时起,我就可以进行基本的修复了
如果部分本地克隆的简单修复和从服务器拉取无法修复,则在将更改(如果有)备份到捆绑包或修补程序后,您可以使用以下两种选项:
- 手动破解Mercurial的文件
- 从服务器执行新的完整克隆。通常这两种方法都比较简单和快速
实际上,当存储库损坏时,有另一种方法可以恢复它,如下所示- 您可以使用convert扩展完成存储库的完整重建。请参见第4.5节 首先通过将以下内容添加到~/.hgrc文件来启用转换扩展名
[extensions]
convert=
然后将不良回购转换为固定回购:
$ hg convert --config convert.hg.ignoreerrors=True REPO REPOFIX
当我突然发现清单中有丢失的文件时,这对我起到了作用——“错误255”。我们最终做的是创建“中心”存储库的新副本,删除此副本中的.hg文件夹,在那里创建一个新存储库(hg init),然后将其作为中心存储库使用
但是,请注意,如果您不需要变更集历史记录作为参考(我们不需要),那么这只是一个合适的解决方案。您仍然可以使用旧的中央存储库进行此操作。尝试从repo中删除文件
00manifest.i
,然后使用hg remove 00manifest.i
和hg commit
命令。为我工作。我做了hg克隆-r 169{crap}{new}
,其余的做了hg pull
。当我运行hg update
时,它在00manifest上得到了中止:完整性检查失败。I:173代码>再次。为了好玩,我还试着再往回走(165),但运气不好。克隆人在拉之前验证了吗?验证
拉后是否产生与之前相同的输出?如果一次只拉取一个变更集,会发生什么情况?(当然,首先使用incoming
)如果从源代码执行全新的克隆,会发生什么情况?:)169版验证成功,但我在hg-incoming
上的完整性检查失败。拉取版本170和验证消息更改(“不在清单中”条目的子集,以及其中一个文件上的“缺少revlog”)。从源代码克隆工作正常。@帕特里奇:克隆前将Mercurial更新到最新版本。@tonfa:他们做到了。大多数情况下是因为2.5“我的希捷GoFlex硬盘有缺陷,所以我更换了它。偶尔开始,情况变得更糟。有几个例子也发生在加密闪存棒上。这则轶事的要点是,这是硬件故障,而不是用户错误。一天后重读它,我的时态可能会产生误导。解决这个问题的一个典型方法是做del*.pdf*/s
,这也会清除.hg目录中的相关文件,这很糟糕。删除00manifest.i很容易,但你接下来做了什么?这对我来说非常有用!
$ hg convert --config convert.hg.ignoreerrors=True REPO REPOFIX