如何修复未通过更新的Mercurial仓库因为指向subrepo中缺少修订?

Pol*_*Pol 9 mercurial mercurial-subrepos

我们的mercurial存储库在尝试更新到具有不再存在的subrepo/revision对的旧分支时会卡住.

abort: unknown revision '22e9bb6a6cd98be85b995f632b2f72d6298f9354'!
Run Code Online (Sandbox Code Playgroud)

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

Ry4*_*ase 7

subrepo是否仍然存在于其他地方?您可以使用[subpaths]部分更改指向它的指针,该部分在位置的顶部提供转换图层.hgsub.

如果它真的不存在于任何地方你可以如此深刻的魔法如:

hg debugsetparent REVISION_YOU_WANT
cat /dev/null > .hgsub   # put an empty .hgsub in place
hg commit .hgsub
hg update tip
Run Code Online (Sandbox Code Playgroud)

这应该创建一个新版本,就像REVISION_YOU_WANT一样,除了它有一个空的.hgsub文件,所以你可以更新它.

如果你能在某个新位置找到subrepo并用子路径指向它,那会好得多.

  • 请注意,如果您尝试更新的提交位于命名分支(默认值除外)上,则在执行hg debugsetparent <branchname>后,您还必须执行hg branch <branchname>. (2认同)