Official website
Mercurial is a Version Control System (VCS) for
controlling source code or just about any sort of textual data that
needs to frequently changed and worked on by many people. It can also
handle binary data with various degrees of grace. Its best-known free competitors are Subversion, CVS, git, and bzr.
The revision control node contains an overview of what software like
Mercurial does. Briefly, it allows collaboration of many people on the
same source tree by allowing asynchronous changes of the same source
text, and resolves conflicts (when two people modify the same bit of
code at the same time) by merging, that is, by forcing the person
committing the conflicting changes to decide which one of the two
conflicting changes it should use. The common alternative is to lock
files, that is, the person working on a particular file locks it so
that nobody else can modify it while that person is working on it,
which is an antiquated method of source control and not very common
nowadays.
Mercurial comes with an integrated web view and several extensions for
easing various forms of source control. It represents the revisions by
a directed acyclic graph, basically, a tree where branches may merge
back together as two revisions from the tree get merged. The source
for Mercurial itself is all Python, and its license is the GPL
version 2, making this free software. It is often abbreviated to
hg, based on the chemical symbol for mercury, and although it is
primarily a command-driven interface, several graphical frontends
exist, such as TortoiseHG which integrates with the
Windows file browser, or its Unix-only variant, hgtk.
Additionally, most respectable editors and IDEs also have
integration with hg, easing the workflow of doing everything from one
place, pulling from the remote or local repository, working on the
code, reviewing changes, and pushing those changes back.
Mercurial was conceived during 2005 as an alternative to BitKeeper
during an "I-told-you-so" moment in the history of Linux. Linus
Torvalds was using the non-free BitKeeper software for managing the
Linux source tree which nevertheless allowed gratis use, at least for
Linux. One day, when the BitKeeper protocol was reverse-engineered,
the author of BitKeeper decided to go back on his decision to allow
gratis use of the software for Linux, and Mercurial was one of the
projects that arose in order to replace BitKeeper. The other one is
Git, writen by Linus himself, and the one that eventually ended up
replacing BitKeeper for Linux.
Being software that was originally intended to manage the semi-chaotic
Linux source tree, it handles very well branching, merging, and
distributed revision control. That is, cloning of an entire repository
is a frequent and easy operation with Mercurial, and is in fact the
preferred method to first get a local working copy. When working with
a repository, it's possible to locally clone it, try something else,
and then merge back the changes from the two clones. It's also
possible to work as the Linux source tree works, many side
repositories with lieutenants from which the core dictator (Linus
himself) pulls to form the officially-sanctioned source tree, although
I personally have seldom seen Mercurial being used this way. This
usage, incidentally, is roughly what people mean with "distributed
revision control".
There are several projects that use Mercurial, like GNU Octave,
SAGE, which were the two that motivated to get me started with the
software myself, and now I use it to manage all of my code. Possibly
because of the language in which Mercurial is written, even the
Python project has recently announced its move to Mercurial. Its
development is alive and well. In the Freenode #mercurial
channel, users and developers alike congregate to further its
development or to ask questions about its usage.
Oh, by the way, ecore is on Mercurial
now.