2011-08-31 51 views
2

我相信我最近在Mercurial中的提交已经变得腐败。我不能再犯任何事了,我也不能回滚。Mercurial Repo:最近一次提交中的腐败

我跑hg verify其中建议我应该运行hg recover。然后我跑hg recover的建议,现在我得到的错误:

abort: index 00manifest.i is corrupted!

根据这个帖子:http://osdir.com/ml/version-control.mercurial.general/2007-03/msg00099.html我应该能够从00manifest.i文件中删除最后64位,并重新开始工作。

这是正确的,我该怎么做呢?

PS。到目前为止,我所做的一切都在原始存储库的克隆上。

非常感谢,

安迪

+0

固定'00manifest.i'听起来很合理。你的链接文章包含了如何从'00manifest.i'中删除最后一个条目(64字节)的说明 - 你试过了吗? –

+0

嘿奥本,我应该提到我在Windows上,所以我不能这样做。有任何Windows应用程序可以让mt截断文件吗? – atwright147

回答

4

可以截断00manifest.i使用Python的控制台:

$ python 
>>> with open("00manifest.i.orig", 'rb') as fp: 
...  data = fp.read() 
>>> with open("00manifest.i", 'wb') as fp: 
...  fp.write(data[:-64]) 

首先,文件是只读二进制模式。 data只是一个字符串。然后,切片用于写回除最后64个字节以外的所有字节,再次以二进制模式写入。

+2

无论Atwright使用什么其他语言,它们可能都具有二进制文件IO功能。 –

+0

Python选项完美运行。然后我'回滚'回购和命令行说一切都很好。 – atwright147