Transit of Mercurial

I’m quite fond of Mercurial, despite (or perhaps partly because of) using Git daily for the last ten years.

The first DVCS I used was Darcs, which I liked; then I tried Mercurial and liked it even more. (Curiously, as I look over my blog posts from that year, 2007, Git seemed not to be on my radar at all.)

I’ve always found the Mercurial UX to be more pleasant than Git. Little things like invoking commands with unique left-substring, or seeing inbound or outbound commits with a single memorable command. Less operational complexity and fewer ways to shoot yourself in the foot, but with equivalent power.

hg commands

I also have some unease at the technical monoculture that has arisen around GitHub.

When Bitbucket – which at one time was notable for only supporting Mercurial – announced last year that they were dropping it, I started hunting for a new home for my Mercurial repos hosted there.

Beyond having current local clones of all of them, I wanted a project-hosting home for the active ones.

Options I considered:

  • Self-hosting. Fun in theory, but I don’t want the system administration burden.
  • “Just” convert all my Mercurial repos to Git. I did this for some legacy repos, but for the active ones it’s more of a surrender than a solution.
  • Sourceforge. Not Dead Yet, and supports Mercurial. However, some of my repos are private; SF is open-source only.
  • Helix TeamHub by Perforce. Supports Mercurial, and private repos, and has all the features. But after trying it out I found it just didn’t click; it felt kind of overbuilt and soulless.
  • Heptapod, a fork of GitLab supporting Mercurial. This one is looking good now, with both a commercial offering and a FOSS-only instance. Unfortunately it hadn’t reached this stage back when I needed it, so I passed.
  • Sourcehut. In public alpha, but stable and growing. Has private Mercurial repos and an issue tracker, the things I need the most. It’s an open source project, to boot.

In the end I chose Sourcehut and became a paid contributor. Looking over the list above, I’m glad there were so many options. When Bitbucket first made their announcement, it wasn’t looking so good. Now I’m buoyed by the number of engineers, projects, and companies who embrace a world outside of GitHub and a VCS tool other than Git.