2011-08-31 34 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