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

bra*_*zzi 9 version-control mercurial corrupt

我有一个由Mercurial版本的项目.有一次,我跑了一个命令如...

$ find . -type f | xargs sed -i.bkp 's/my_func/another_func/'
Run Code Online (Sandbox Code Playgroud)

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

$ hg status
abort: index 00changelog.i is corrupted!
Run Code Online (Sandbox Code Playgroud)

该文件00changelog.i不包含替换的字符串,即使我移动00changelog.i.bkp00changelog.i问题仍然存在.hg verify没有帮助:

$ hg verify
abort: index 00changelog.i is corrupted!
Run Code Online (Sandbox Code Playgroud)

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

mpm*_*mpm 7

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

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