Mercurial:消息“中止:索引 00changelog.i 已损坏!”运行 sed 命令后。怎么处理呢?
我有一个由 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
从我克隆的存储库复制到损坏的存储库来解决此问题。但我想知道:还有其他更实用的方法来解决这个问题吗?顺便说一句,如果“损坏”的文件甚至没有改变,为什么会发生这个问题?
I have a project versioned by Mercurial. Once, I ran a command such as...
$ find . -type f | xargs sed -i.bkp 's/my_func/another_func/'
...in this project. Then Mercurial just stopped to work on it:
$ hg status
abort: index 00changelog.i is corrupted!
The file 00changelog.i
did not contain the replaced string, and even if I move 00changelog.i.bkp
to 00changelog.i
the problem persisted. hg verify
didn't help either:
$ hg verify
abort: index 00changelog.i is corrupted!
I solved this problem by cloning the project from my remote repository in another directory and then copying .hg
from my cloned repository to the corrupted one. However, I wonder: is there another more practical way of solving it? BTW, why does this problem happens if the "corrupted" file is not even altered?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请注意,有两个 00changelog.i 文件:
Note that there are two 00changelog.i files:
我会使用 Convert 重新生成存储库或移植以将补丁移至新的存储库。祝你好运。
I'd use convert to re-generate the repo or transplant to move the patches to the new one. Good luck.