
Version control has been a hobby of mine for a long time, since I started using RCS a long time ago, then switched to CVS, mostly because I used it within the FreeBSD project and the most documented and used one at the time.
I finally got tired of CVS limitations and, again because FreeBSD started using it, switched to Perforce, a nice but proprietary VCS. Perforce is powerful and fast but after 5 years, I felt that a centralised VCS was not for me as I fought it to keep 3 different repositories in sync (my laptop’s, the one at home and the last one at work).
In the meantime, a new breed of VCS has arisen: decentralised/distributed VCS.
All centralised VCS (CVS, Subversion or Perforce) share the same flaw in their design: offline work is generally severely limited and synchonisation of multiple repositories can be a problem especially if one wants to keep history (although svk works around most of SVN’s limitations).
BitKeeper was the first one to appear. Its design is heavily based on SCCS with enough added code to record the metadata needed for cloning, branching and associated workflows.
In 2002-2003, there was not much choice (BK being not usable due to its license and the attitude of its leader, L. McVoy) and I then switched to Arch. After two years of use enjoying its decentralised nature, I begun to tumble on some of its limitations and I started to look at alternatives including Darcs, Monotone, Mercurial and others.
As you can see with the logo on this very page, the current winner is Mercurial.

![[Powered by PostgreSQL]](/images/pgsql-power.png)
![[Powered by FreeBSD]](/images/powerlogo.png)

![[Lynx supporter]](/images/lynxfull.png)
![[Powered by Apache]](/images/apachepower.png)