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

时间:2016-06-19 01:09:38

标签: garbage-collection mercurial

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

这是非常酷的,因为许多'重写'操作现在被移入DAG(如Git) - 不再需要MQ或需要搁置的补丁/线性化!它还避免了以前需要修改,rebase,histedit等的大型存储库单个条带的痛苦 - 慢速。

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

现在是时候了,而且有很多变化集会更长一些(根本):

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

Git中的'可比较'操作将是一个修剪孤儿提交的GC。

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

1 个答案:

答案 0 :(得分:3)

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

hg strip --hidden -r 'extinct()'

绝种变更集是过时的,也只有过时的后代(即没有依赖于它们的实时变更集)。

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