Mercurial帮助文本说,"strip命令删除指定的变更集及其所有后代." 这听起来非常像重写历史记录,如果有人将他的工作建立在一个突然被删除的变更集之上,那么它必然会引起问题.但是帮助文本还说该命令"不是历史重写操作,可以在公共阶段用于变更集".我确信编写帮助文本的人非常清楚自己在做什么,所以我错过了什么才能理解这一点?
我不能肯定地说,但我的猜测是它是“祖父”。hg strip
作为其中一部分,mq
该项目的开始时间比增加阶段至少早了三年。
可能更好的措辞是:
不被认为是历史重写操作,并且可以在公共阶段的变更集上使用
当添加阶段时,我们会非常小心地避免破坏任何人现有的工作流程。承诺从草稿阶段开始,并在推动后公开。任何阶段感知命令都知道,在推送提交后,提交的阶段是公开的,并且不允许修改(除非推送到非发布存储库......)。
然而,已经有人使用strip
手动和脚本来删除已推送的变更集,如果strip
在升级后突然说“嘿,你不能剥夺它是公开的!” 那么那些人的向后兼容性承诺就会被打破。
Phases 正在慢慢成长为一个非常惊人的进化系统,在几乎所有情况下,它都是比 mq 更好的选择,但我仍然怀疑我们是否会让 Matt 删除 mq 和 strip ——他仍然坚持维护 Python 2.4 兼容代码库已经有 9 岁了!
Tl;Dr:尽管它strip
始终是一个禁用的扩展,但太多人使用它来改变它的行为以及阶段的出现。