3 ms·
Ok so it has nothing to do with immutability, it's just one warns earlier than the other. Thanks for clarifying.
by jjnoakes 10y ago
Ok so it has nothing to do with immutability, it's just one warns earlier than the other.
Thanks for clarifying.
- jordigh 10y agoIt is about immutability. No Mercurial command (histedit, rebase, uncommit, amend) will allow you to change an immutable (public) commit unless you first force it back into the draft phase. You can say that because you can always force public commits into drafts that they're not really immutable, but that's a bit of a perversion of what Mercurial's phase system is intended to do.
- jjnoakes 10y agoAnd no git command lets you change what public history looks like unless you --force the push. So the check is in a different place. That doesn't seem to me to imply that Mercurial's history is "immutable" and git's is "mutable", especially since those words have precise meanings, and even WITH the --force, git doesn't change anything in the history, it just writes out a new history and updates the branch ref to point to the new history. The only thing mutated (in both systems) is the ref to the branch head, right? So aside from warnings and errors being in different places (both before publish time), what is the difference between the two that leads you to argue that one is immutable and one isn't?
- marcinkuzminski 10y agoI think what Mercurial brings here is that even if you have a repo and you do a force-push you keep all the heads. Thus it's almost like a history of changes. I think if you do a code-review and you get the final state of the repo to check, you can nicely tell how it was evolved/squashed/re-ordered. I find that workflow much more useful than just rewriting history like in git (i know about reflog)