在hg拉动期间连接下降。现在我的回购已损坏?

时间:2014-08-31 04:46:48

标签: mercurial

当我的连接断开时,我今天正在做一个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克隆的情况下修复我的回购?我将来如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

使用Mercurial的recover命令:

hg recover

如果这不起作用,你将不得不克隆。

当你Ctrl+C进行Mercurial操作时,你就会在结果上掷骰子。有时它取消了很好,有时你会得到存储库损坏。通常最好让它完成它需要做的事情。调查连接断开的原因,并尝试使连接更具弹性。

幸运的是,您正在工作的目录可能没问题,因此,如果/当您克隆新的工作副本时,您应该能够复制您在旧/损坏的存储库中提交的任何文件。