Mercurial - the VCS I wish had won back in 2005
See also the VCS topic
Distributed VCS
After I tasted of DVCS with GNU Arch I could not go back to centralised ones and choose Mercurial over Git. Mercurial was created in 2005 by Olivia Mackall almost at the same time as Git. Compared to Git, it has a decent UI/UX, the concept of extensions and was a lot easier to use. The fact that it was 95% Python and some bits in C wasn’t so much of an issue.
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 |
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)
