This is the killer feature for me.
Why Mercurial?
Here’s a list of Mercurial features that I think are really cool:
Revsets – a domain-specific language for querying your commits
Templates – a domain-specific language for altering the output of almost every command. Putting together these two you can do things like this: http://jordi.inversethought.com/blog/customising-mercurial-l...
Evolution – a distributed and safe way to share rewrites (think automatically recovering from upstream rebase without any git reset --hard and no git push --force).
Absorb – automatically amends an entire stack of WIP commits at once by picking the right diffs from your working directory based on which commits’ contexts they fit best.
Curses interface for hunk-picking – a unified interface for splitting diffs for any purpose: whether to revert working-directory changes, write a new commit, uncommit parts of a commit, or amend a commit with more diffs. Just add --interactive to any of those commands and start picking hunks!
A fairly rich built-in web interface – hg serve and point your browser to http://localhost:8000 and you’re good to go.
Lots of support for monorepos – indeed, this is the main reason that Google, Facebook, and Mozilla are all pouring work into hg and are using it.
A consistent UI – this one is more subjective but often-touted feature of Mercurial. If a command accepts a revision/hash/tag/bookmark; it always uses the -r/--rev flag for it (and you can also always use a revset for any command that accepts a revision). If a command allows hunk selection, it always uses the -i/--interactive flag for it. The help for every command fits in about a screenful.
Give it a try! Mercurial is neat!