Mercurial:消息“abort:index 00changelog.i已损坏!”运行sed命令后。怎么处理呢?

时间:2011-10-07 20:12:26

标签: version-control mercurial corrupt

我有一个由Mercurial版本化的项目。有一次,我运行了一个命令,如......

$ find . -type f | xargs sed -i.bkp 's/my_func/another_func/'

......在这个项目中。然后Mercurial停下来继续工作:

$ hg status
abort: index 00changelog.i is corrupted!

文件00changelog.i未包含已替换的字符串,即使我将00changelog.i.bkp移至00changelog.i,问题仍然存在。 hg verify也没有帮助:

$ hg verify
abort: index 00changelog.i is corrupted!

我通过从另一个目录中的远程存储库克隆项目然后将.hg从克隆的存储库复制到损坏的存储库来解决了这个问题。但是,我想知道:还有另一种更实用的解决方法吗?顺便说一句,如果“损坏的”文件甚至没有改变,为什么会出现这个问题?

2 个答案:

答案 0 :(得分:7)

请注意,两个 00changelog.i文件:

  • 一个在.hg / 00changelog.i中,这是一个古老版本的小向后兼容占位符
  • .hg / store / 00changelog.i
  • 中的另一个(您损坏的那个)

答案 1 :(得分:-2)

我会使用convert来重新生成repo或者移植以将补丁移动到新的补丁。祝你好运。