I can’t say it with certainty, but I guess it’s "grandfathered in". hg strip began as part of mq , preceding the addition of phases for at least three years.
Probably the best phrase:
not considered * an operation of rewriting history and can be used in sets of changes in the public phase
When the steps were added, great care was taken not to disrupt any existing workflow. Obligations begin at the project stage and become publicly available after they are pressed. Any commands that support the phase know that after clicking the commit phase it is public and does not allow modification if it is (unless push was in the repository that is not the publisher ...).
However, there were people who already used strip manually, and in the scripts, they deleted the change sets that were pressed, and if strip after the update suddenly said: “Hey, you can’t ban it publicly!” then these people would have a broken promise of compatibility.
The phases are gradually turning into a rather amazing evolve system, which will be a much better choice than mq for almost all cases, but I still doubt we will ever take Matt to remove mq and strip - he still insists on keeping it compatible with Python 2.4 and 9 years old!
Tl; Dr: Despite the fact that strip has always been a disabled extension, too many people use it to change its behavior with the advent of phases.
source share