Benad's Web Site

Today I presented a passionate argument (tirade) to a colleague against their department's choice of a commercial / proprietary version control system. What if you want to change your mind? How do you export your stuff?

Storing data in a version control system is not exactly the same as relational databases or file systems. With both SQL DBs and most file systems, at least you have some standard and documented interface to fully export your data, even though there may be subtleties specific to an implementation that may be difficult to export (or import in anything else for that matter).

But with version control, the conceptual distance between each version controls differ so much that attempting to transfer all data from one to another would invariably cause a loss of valuable data. It's still possible to transfer most of the data, but the less flexible the interface is to the revision and meta data, the more difficult it is. As an example, transferring data between Subversion and Mercurial, two conceptually simple systems, are still different to have a few edge cases where there is information loss going from Subversion to Mercurial. Oh, and don't get me started on how much those commercial systems are purposely too complex to lock you in the product after an expensive training of both users and admins.

In effect, storing your source code in a commercial and closed-source version control system means that you don't really own your code anymore, and you'll be at their mercy forever. It's like storing all your files in a Netapp server and forgetting to pay the license and "Oops!", you can't have access to your files anymore. Of course, their sales people are really persuasive (with kickbacks, I guess), but if you buy in a commercial system that has no complete export option, you deserve what you get (and you're a sucker). Now, when you work with a company on old source code and you need to install some horrible software client made that's 10 years old and barely work on your modern Win7 64-bit to check out code which end up installing junk all over your computer and takes hours to check out the files, you finally know what it means to be stuck with yet another shitty commercial version control system.

Published on January 31, 2012 at 15:35 EST

Older post: Time-Shifting Web Articles with Instapaper

Newer post: I Need Maps