当我的连接断开时,我今天正在做一个hg pull,我不得不按Ctrl + C了。通过中止拉动和回滚退出Mercurial。当我再次尝试hg时,它从头开始拉出所有内容,然后告诉我回购未通过完整性检查,并且hg验证我的50k修订版中的每一个都已损坏:
48697: unpacking changeset a61b3e37d87e: integrity check failed on 00changelog.i:48697
48698: unpacking changeset 5121ebcb6aa0: integrity check failed on 00changelog.i:48698
changelog@?: rev 48699 points to nonexistent changeset -1
(expected 48699)
changelog@?: rev 48700 points to nonexistent changeset -1
(expected 48700)
changelog@?: duplicate revision 48700 (48699)
changelog@?: rev 48701 points to nonexistent changeset -1
(expected 48701)
changelog@?: duplicate revision 48701 (48700)
changelog@?: rev 48702 points to nonexistent changeset -1
(expected 48702)
changelog@?: duplicate revision 48702 (48701)
changelog@?: rev 48703 points to nonexistent changeset -1
(expected 48703)
changelog@?: duplicate revision 48703 (48702)
checking manifests
manifest@?: data length off by 2190024704 bytes
manifest@?: rev 0 points to unexpected changeset 0
manifest@?: 41fcd28f8ff6 not in changesets
manifest@?: rev 1 points to unexpected changeset 1
manifest@?: fdf33d9f9be1 not in changesets
manifest@?: rev 2 points to unexpected changeset 2
manifest@?: 4dd93d3b7258 not in changesets
manifest@?: rev 3 points to unexpected changeset 3
谁能告诉我发生了什么?是否可以在不进行完整的hg克隆的情况下修复我的回购?我将来如何避免这种情况?
答案 0 :(得分:1)
使用Mercurial的recover
命令:
hg recover
如果这不起作用,你将不得不克隆。
当你Ctrl+C
进行Mercurial操作时,你就会在结果上掷骰子。有时它取消了很好,有时你会得到存储库损坏。通常最好让它完成它需要做的事情。调查连接断开的原因,并尝试使连接更具弹性。
幸运的是,您正在工作的目录可能没问题,因此,如果/当您克隆新的工作副本时,您应该能够复制您在旧/损坏的存储库中提交的任何文件。