如何在 Hg 中 "GC" 或 "strip" 隐藏进化变更集?
How to "GC" or "strip" hidden evolution changesets in Hg?
Hg 有一个新的 Changeset Evolution 功能和相关的 Evolve 扩展。
这 非常酷 因为现在许多 'rewrite' 操作都移到了 DAG 中(比如 Git)- 不再有 patch/linearization需要 MQ 或搁置!它还避免了以前需要修改、变基、histedit 等的大型存储库痛苦缓慢的个人条带。
然而,经过一段时间和许多本地重写后,可能会积累 "significant number" 的变更集,这些变更集会被隐藏/标记为过时。
是时候了,有很多变更集,如果能再拥有(完全)就好了:
- 是否有 good/approved 方法从本地 Hg 存储库中删除 hidden/obsolesced 变更集?
Git 中的 'comparable' 操作将是修剪孤立提交的 GC。
我不想重新克隆存储库。此外,隐藏的提交(谢天谢地)不是 pushed/published.
安全删除过时变更集的一个简单方法(嗯,尽可能安全)是使用 extinct()
revset,即:
hg strip --hidden -r "extinct()"
已灭绝的变更集是那些已经过时并且也只有过时后代的变更集(即没有仍然依赖于它们的实时变更集)。
请注意,除非磁盘 space 变得稀缺,否则没有必要删除这些变更集。
Hg 有一个新的 Changeset Evolution 功能和相关的 Evolve 扩展。
这 非常酷 因为现在许多 'rewrite' 操作都移到了 DAG 中(比如 Git)- 不再有 patch/linearization需要 MQ 或搁置!它还避免了以前需要修改、变基、histedit 等的大型存储库痛苦缓慢的个人条带。
然而,经过一段时间和许多本地重写后,可能会积累 "significant number" 的变更集,这些变更集会被隐藏/标记为过时。
是时候了,有很多变更集,如果能再拥有(完全)就好了:
- 是否有 good/approved 方法从本地 Hg 存储库中删除 hidden/obsolesced 变更集?
Git 中的 'comparable' 操作将是修剪孤立提交的 GC。
我不想重新克隆存储库。此外,隐藏的提交(谢天谢地)不是 pushed/published.
安全删除过时变更集的一个简单方法(嗯,尽可能安全)是使用 extinct()
revset,即:
hg strip --hidden -r "extinct()"
已灭绝的变更集是那些已经过时并且也只有过时后代的变更集(即没有仍然依赖于它们的实时变更集)。
请注意,除非磁盘 space 变得稀缺,否则没有必要删除这些变更集。