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

发布于 2024-12-09 03:37:41 字数 618 浏览 0 评论 0原文

我有一个由 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半枫 2024-12-16 03:37:41

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

  • 一个位于 .hg/00changelog.i 中,它是旧版本的一个小的向后兼容占位符,
  • 另一个(您损坏的文件)位于 .hg/store/00changelog 中。我

Note that there are two 00changelog.i files:

  • one in .hg/00changelog.i which is a small backwards-compatibility placeholder for ancient versions
  • another (the one you damaged) in .hg/store/00changelog.i
堇年纸鸢 2024-12-16 03:37:41

我会使用 Convert 重新生成存储库或移植以将补丁移至新的存储库。祝你好运。

I'd use convert to re-generate the repo or transplant to move the patches to the new one. Good luck.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文