Hacker News new | ask | show | jobs
by muxator 1525 days ago
Talking about flexible mutable history, there are two more official extensions to be mentioned:

- evolve [0], which allows to rewrite history lossessly (without ever risking losing data)

- absorb [1] which takes uncommitted working copy changes, and for each hunk finds the last commit that touched those lines, and rewrites it. It's an extension originally from Facebook, in core since 2018. Works like magic: no "fix" commits ever more.

Plus, all of this is available using mercurial locally and interacting with git (and github) remotely, via hg-git. Admittedly, this requires to be a bit of an advanced user, but the gains in ergonomics are tangible.

[0] https://www.mercurial-scm.org/doc/evolution/

[1] https://gregoryszorc.com/blog/2018/11/05/absorbing-commit-ch...