Recently CodeIgniter, a product form Ellis Labs, switched their version control system from subverison to mercurial. After reading several forums where users were finding this out a little late and were disappointed about it I decided to investigate further. What I found surprised me.

As I mentioned in the my talks on version control at the Lasso Developers conference, there's a major divide in the version control world, viz. centralized vs. decentralized version control systems. Subversion, perforce, cvs etc are all centralized version control systems, while git and hg (mercurial) are distributed. Check this link for more info.

Previous to the move, many users of CodeIgniter used svn externals to link to the latest CodeIgniter build across many of their websites. When Ellis Labs switched to Mercurial they didn't realize that many users had linked to their libraries this way. In fact, it broke a lot on installations and many users setups for their sites when they went to update them again.

There's a forum thread over at the CodeIgniter website about the switch and you can see why a lot of people aren't happy. Basically, mercurial doesn't support externals at all. This is pretty sucky. Maybe I'll put CodeIgniter under version control at github so that instead of having to download the zip files all the time now that I can just use git submodules instead.