JS(1) Jesse Shawl JS(1)

Mercurial for Git Evangelists

I’ve been playing around with mercurial as of late as a way to enhance what I know about git and version control in general. These are my in-progress notes.

A lot of things are familiar

Revisions, not SHA1s

hg log is similar to git log, with a few important differences.

$ hg log --graph --style=compact @ 2[tip] 3afb761704c7 2014-12-06 11:14 -0500 jesse | third commit | o 1 2d9ef30807a4 2014-12-06 11:09 -0500 jesse | second commit | o 0 ff70fcdc63f9 2014-12-06 11:07 -0500 jesse initial commit

Instead of SHA1 hashes to label commits, mercurial uses revision numbers. This means reverting changes is easy as hg update 1 or hg update 0. The @ symbol indicates which revision your working directory is in, ie git’s HEAD.

Multiple HEADs

hg update feels a bit like git reset, but is less dangerous in terms of its ability to rewrite history.