【问题标题】:How to fix a Mercurial repo that fails updating because points to missing revision in subrepo?如何修复由于指向子存储库中缺少修订而导致更新失败的 Mercurial 存储库?
【发布时间】:2011-10-30 16:51:19
【问题描述】:

我们的 mercurial 存储库在尝试更新到具有不再存在的子存储库/修订对的旧分支时卡住了。

abort: unknown revision '22e9bb6a6cd98be85b995f632b2f72d6298f9354'!

有没有办法告诉 Mercurial 更新到修订版或分支,但不尝试更新子存储库?

【问题讨论】:

标签: mercurial mercurial-subrepos


【解决方案1】:

子存储库是否仍然存在于其他地方?您可以使用[subpaths] 部分更改指向它的指针,该部分在.hgsub 中的位置之上提供了一个翻译层。

如果它真的不存在于任何地方,你可以使用一些深奥的魔法,例如:

hg debugsetparent REVISION_YOU_WANT
cat /dev/null > .hgsub   # put an empty .hgsub in place
hg commit .hgsub
hg update tip

这应该会创建一个与 REVISION_YOU_WANT 类似的新修订版,只是它有一个空的 .hgsub 文件,因此您可以随后对其进行更新。

如果您可以在某个新位置找到子存储库并使用子路径指向它,那就更好了。

【讨论】:

  • 下次我推送时,这个 hack 是否会传播到其他存储库,或者它只是本地的?
  • 如果你提交,它将在 'push.如果你在行动之前不想要那个克隆。本地克隆(几乎)是即时的,并且(几乎)不占用磁盘空间——它们是一种伟大的尝试方式。
  • 请注意,如果您尝试更新回的提交位于命名分支(默认除外),则在执行 hg debugsetparent 后,您还必须执行 hg branch .
  • 好点@KevinBerridge——感谢您将来自 IRC 的信息转发回这个问题。这是伟大的 Mercurial 公民。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多