RSS Feed
16
July
2009

How distributed version control systems help me for agile software development

Let's assume you work on an agile software development project and for the next release you have to implement user story A, B and C. A distributed version control system (short DVCS) allows you to create one branch for each user story, so called feature branches.

This way you can work on each user story separately without having to worry about side-effects. Another advantage is that different branches for each user story can be useful when the release date gets closer and time runs out. Because you can decide which branch to merge and which to hold back. Though the typical workflow is to merge a branch back into the main line as soon as you're done. But still different feature branches give you the flexibility and choice.

Now, subversion users often say that this can be done easily in subversion, too. The problem is, imho, that in subversion every developer sees every branch. But sometimes I really just want to try something out and maybe I do not want to show my crazy weird thoughts to everyone. Also, merging in a DVCS preserves history. Because a DVCS merges each commit point. Subversion, however, simply applies the difference between the two branches. Think of doing a diff between the feature branch and trunk and then apply the patchfile onto trunk. Looking at the history of trunk you will only see one big commit with lots of changes.

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.