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 :
- No canonical, reference copy of the codebase exists by default; only working copies.
- Common operations (such as commits, viewing history, and reverting changes) are fast, because there is no need to communicate with a central server. Rather, communication is only necessary when pushing or pulling changes to or from other peers.
- Each working copy effectively functions as a remote backup of the codebase and of its change-history, providing natural protection against data loss.
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.