Saturday, November 05, 2011

Central better then distributed?

While we all know that distributed version control systems are considered the wave of the future and the better solution for version control, there is at least one scenario where a centralized system can be, and is, the better solution.

First, what are version control systems typically used for? The simple answer is tracking changes to source code files. And source code is, typically, text. Therefore, it is easy to see what has changed and, more importantly, merge changes.

The merging of changes is the key issue here in that any version control system can merge changes between at least two versions of a file and have a single file as a result. The big benefit with distributed systems is that since the merging happens on the client, it's faster.

However, when we look at binary files, the whole thing falls apart since in most cases, a binary format cannot be easily merged. So, how do we ensure that if two people can make changes and not necessarily overwrite one set of changes with another? This is where a centralized system with locking comes into play. By being able to lock a file, and proper training, the second person would have to wait for the file to be unlocked before making changes to the file.

Now, where would this be useful? Here are a few scenarios: managing word documents for proposal, managing the images for a web site, managing diagrams for project planning and design, and managing data files that store complex data.

Granted, this isn't the most common scenario, but it's one that may exist and can be important for certain organizations or activities.