Sunday, May 25, 2008

Subversion objection #2 "Branch proliferation" and other weapons of mass development

"Branch proliferation": this is a phrase I have heard crop up unbidden (and most certainly unappreciated) in independent situations.

I've found a reference here to a good way to hang yourself here - it seems it was a somewhat contrived situation.

It seems to be an expression of concern that allowing developers to create branches will lead to chaos or have other detrimental effects..

This also seems to be correlated with development environments where historically code branches have either been technically impossible or rigourously controlled by management.
So hence comments made with little true insight.

My view is that branches used even with the minimum of restraint are a guaranteed enhancement to the process, as long as some preconditions are met:
  • the build and test process needs to be well captured in the branch location as far as is possible
  • don't make branches too hard to set up and use
  • use a development and coding style that is "merge-friendly" - to whit:
    use a light touch for code changes
    settle on key interfaces early on and stick to them
    make changes to interfaces in atomic changes
    egregious pretty printing changes and file renames are not going to engender popularity
  • use them for release candidates once the features seem baked
  • consider them for medium term feature development you want to isolate for reasons such as risk or bug fixing on a new platform (Vista or VS2008)

This aside, I can heartily recommend building them into your process.

You have nothing to lose but your chains.