如何在 Hg 中“GC”或“剥离”隐藏的进化变更集?

use*_*740 4 mercurial garbage-collection

Hg 有一个新的Changeset Evolution功能和相关的 Evolve 扩展。

非常酷,因为现在许多“重写”操作都移到了 DAG(如 Git)中——不再需要使用 MQ 或搁置进行补丁/线性化!它还避免了以前需要修改、rebase、histedit 等所需的痛苦缓慢的大型存储库单个条带。

然而,经过一段时间和许多本地重写后,可能会积累“大量”的变更集,这些变更集被隐藏/标记为过时。

正是那个时候,并且有许多变更集,最好再拥有(根本):

  • 是否有一种好的/批准的方法可以从本地 Hg 存储库中删除隐藏/过时的变更集?

Git 中的“可比较”操作将是修剪孤立提交的 GC。

我不想重新克隆存储库。此外,隐藏的提交(谢天谢地)没有被推送/发布。

Rei*_*nds 5

安全地摆脱过时的变更集(好吧,尽可能安全hg strip)的一种简单方法是使用extinct()revset,即:

hg strip --hidden -r 'extinct()'
Run Code Online (Sandbox Code Playgroud)

灭绝的变更集是那些已经过时的并且只有过时的后代(即没有仍然依赖于它们的实时变更集)。

请注意,除非磁盘空间变得稀缺,否则不需要删除这些变更集。

  • 如果有人在 Windows 上遇到此问题:将单引号替换为双引号,即 ' --> " (2认同)