Editorials

Distributed Version Control

Writing code is the skill needed for every developer. Patterns and Software Development Lifecycle practices along with version control enhance the code writing skills. It is the version control capabilities that enable developer collaboration.

Most of the version control systems for the first few years were essentially the same. They had a central repository from which all checkout and check in actions were performed. All developers worked from the same repositories. Branching and merging was implemented with various levels of success.

When distributed development environments became popular the old version control techniques began to break down. It was often too slow, complicated, un-reliable, or insecure to have distributed developers working against a centralized version control system. New distributed version control systems began to emerge such as git or Mercurial.

Interestingly, both of these are open systems tools, maintained by a distributed group of developers.

Both of these tools are built around the most difficult action in earlier version control systems; merging. No longer is merging an advanced skill. Instead it is the backbone of distributed version control. Changes are constantly being merged from one branch to another embracing the concept of parallel development which may be brought back to a centralized truth. This doesn’t mean that there is never conflict in merging; it means that merging is easier on the whole, and fixing conflict is easier to resolve as well.

Instead we now embrace branching and merging by all developers instead of relegating that to the practice of some special version control guru.

So, what are you using today? Do you find the newer distributed version control capabilities to be helpful? Share your thoughts in Email to btaylor@sswug.org, or leave your comment here online.

Cheers,

Ben