[freebsd banner]

Mercurial - the VCS I use daily

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 centralized 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:

Name Purpose
color Colorize Hg’s output
convert Conversion between different VCS
fetch Implement the pull + merge action in one command
graphlog Show in ASCII art the parallel flows with merges
hgflow Implements the Hg equivalent of Git flow
hgshelve With that one can put aside the current modifications to a given file and get them back later
keyword Enable the different $keywords
mq Mercurial Queues, a way to manipulate stacks of patches and version them
patchbomb Enable sending changesets by email
rebase Implements the rebase command
record Cut down and apply parts of a given set of changes individually
transplant With that, you can extract and apply given changesets to a separate repo

Mercurial hosting

Just like Git has Github to host various kind of open-source (or not, but you have to pay to get private repositories), Mercurial has Bitbucket for the same purpose. While it is not as advanced as Github is, it is close enough. BTW, Bitbucket can host Git repos as well.