RSS Feed
20
July
2009

Distributed vs Central Version Control Systems

As you already might know I am a great fan of distributed version control systems (DVCS), especially Git. Today I came across an article that explains the differences and advantages of DVCS very well:

The Journey to Git, Part I.

Remember about my last post about how distributed VCS can help in agile driven software development ? Funny enough the article mentions this as well:

This problem is significantly more insidious. Any time you commit something to a centralized VCS, you're essentially affirming that this feature will absolutely be included in the next release. This assumes, of course, that you're not doing work on your own branch specific either to your feature or yourself--a whole other worm can with centralized version control. As your release process becomes more streamlined and automated (that's happening, right?) and your release cycles get shorter because you're aiming to be a more agile--that's agile rather than necessarily Agile--team (that's happening, too, right?), it becomes more important to not schedule features for a release, but to schedule a release for a date and put in whatever features are finished on that date. This means it's imperative that unfinished features never be committed to your mainline development branch, like trunk, since you can't know exactly when a feature will be ready for release. Instead, features should be developed in isolation and only moved into the "trunk" branch when completely finished. This leads back to the branch-per-feature idea, which central VCS in general and SVN in specific just aren't designed for.

Your Comment

Don't be shy. Please feel free to add your comment.

This site uses a CAPTCHA system. To help protect against unwanted SPAM please type the letters as seen on the black image.