Version Control Systems that I Use

Some time ago, Firefox browser moved from Mercurial to git. There’s even a funny post about when they made the move from CVS to Mercurial.

I think this is a good opportunity to talk about the Version Control Systems that I use.

Git

The famous one. I started to learn it back in 2013. It was wonderful, and after a bit I pushed my colleagues at the school’s robotics team to use in their software. This is the only one I used to collaborate with others.

I find it kind of crazy how git users’ visions of it vary a lot.

Website

Fossil

I don’t remember how I stumbled upon it. Probably by reading something about SQLite, since it’s made for it and using it.

It includes bug reporting tools, and it’s all bundled in a single file. This is convenient to send around (git bundle does it but more complicated).

But the most influential thing for me was that the history is pretty much immutable. I had this view that “a code repository is a pretty description of the history”. But it only wastes time, doesn’t add value, and doesn’t accept that errare humanum est.

I rarely use it, but it changed my world view.

Website

Mercurial

It solves the same problems as git. I even find the subcommands easier to understand, even though I don’t know much about what’s happening behind the scenes (as I’m familiar with git). I only know that cloning within a filesystem creates hardlinks.

Local clones are, in fact, one of the branching ways, even without branch (or bookmark) names.

It has the concept of draft and public commits. History editing mostly only works with draft commits, which for me is a good balance.

This blog (and its drafts) is on Mercurial.

Website

RCS

Old and not a good idea for any modern software repository. But sometimes I just wanted to version a single file, independently from its neighbours’ versions. The other tools feel like too much for this case.

I use it often for single files.

Website

Extra Copy

Sometimes an extra copy is just enough to revert a change I don’t like. I don’t need history, I don’t need branches. I’ve seen people using git for this purpose.

I started this blog with a working copy and an extra copy. I only changed when I had multiple ideas and I wanted to keep the drafts.

Website?