[freebsd banner]

Mercurial is the Version Control System I use daily, even for this website along with Nanoc.

Centralized VCS

This is the oldest type of VCS, some people still uses them because they prefer a single reference repository for everything (the FreeBSD Project is one of them). The most well-known examples of such are the ancient GNU RCS, CVS and the more modern Subversion and Perforce.

Distributed VCS

After I tasted of DVCS with GNU Arch I could not go back to centralised ones and choose Mercurial over Git for its simplicity of User Interface (UI).

Mercurial has all characteristics you can find in other DVCS :

In addition to these, it has a long list of extensions, some of them bundled with it and some other available on the Net. These are the ones I use regularly:

NamePurpose
colorColorize Hg’s output
convertConversion between different VCS
fetchImplement the pull + merge action in one command
graphlogShow in ASCII art the parallel flows with merges
hgflowImplements the Hg equivalent of Git flow
hgshelveWith that one can put aside the current modifications to a given file and get them back later
keywordEnable the different $keywords
mqMercurial Queues, a way to manipulate stacks of patches and version them
patchbombEnable sending changesets by email
rebaseImplements the rebase command
recordCut down and apply parts of a given set of changes individually
transplantWith that, you can extract and apply given changesets to a separate repo

Mercurial hosting

Mercurial used to have Bitbucket as an equivalent to GitHub. They have since stopped supporting Mercurial completely, so I stopped using them.

NOTE: Jujutsu is a new, git-compatible VCS that I started using recently. It has the cleanliness of Mercurial while being better and faster.