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 :
- 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
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.
![[freebsd banner]](https://assets.keltia.net/images/topbar.png)
