在具有后继的Mercurial变更集中,标记为obsolete。
这个标记可以(强行)以某种方式被移除吗?
使用hg strip
删除后继者之后,原始变更集仍然标记为已过时且已灭绝。 hg evolve
拒绝重新创建继任者。
答案 0 :(得分:10)
您无法将更改取消标记为过时,但您可以使用&#34; hg touch <rev> --hidden
&#34;将其恢复生命,其中touch是{{1}}的一部分新命令{3}}
FWIW。它也可以改变过时的变化,但如果你使用触摸,你可能会减少并发症。
答案 1 :(得分:4)
是的!您现在可以删除过时标记。当问到这个问题时,也许在2015年是不可能的。
该解决方案位于2018年4月18日来自user377178的答案中:hg --hidden debugobsolete --delete <revindex>
请注意,您不使用变更集ID。您必须使用索引号(至少在Mercurial 4.1.3中使用)。运行hg --hidden debugobsolete --index
以获取带有过时标记的变更集列表。找到您想要不再使用的变更集的索引,然后运行hg --hidden debugobsolete --delete <revindex>
,并用索引代替 revindex 。然后,您过时的变更集将不再过时。 (它可能多次出现在列表中-我尚未进行彻底调查。)
debugobsolete命令当前未在evolve user guide中列出,甚至在recovering obsolete changesets的部分中也没有列出。但是,它在Evolve How To指南中列出。
非常感谢user377178。
答案 2 :(得分:2)
我已经提出了以下bash函数 - 一个黑客并可能依赖于mercurial版本,但多年来一直运作良好。将revset作为参数。
git rebase