views:

182

answers:

11

I want to be able to choose the right branching strategy for most thinkable situations and organizations. So I'm looking for a extensive list of positive and negative effects of extending the use of code repository branches in a development organization.

Please only post one pro or one con in each post, so that the voting system can help rank the feedback somewhat.

+3  A: 

Pro: Developers can work more freely in tighter iterations without stepping on eachother's feet.

sharkin
A: 

Con: Greater learning threshold for junior developers.

sharkin
+3  A: 

Pro: if you have many branches you'll be pushed to adopt a modern DVCS (my experience is with Mercurial but I hear git or Bazaar are also good) rather than stay with a traditional centralized system (like, say, svn).

Alex Martelli
+2  A: 

Con (and it can be a big one): Merging back at a point in the future. The longer the duration and the greater the deviation of code base, the harder your life will be. My advice: think very carefully about branching and ensure you only do it when necessary and consider the effort involved in merging at a later date should it be required.

Troy Hunt
maybe devide into two answers?
sharkin
All done, try it now.
Troy Hunt
This is a limitation of the older version control systems without easy branching and merging. Try using Git, Mercurial or other similar ones.
Neil
+3  A: 

Pro: By keeping latest deployed version in trunk, small fixes can be rolled out quickly without extensive testing of the latest development version.

Stefan Lundström
A: 

Pro: Each update is independant from the others, so work can be parallelized.

mouviciel
A: 

Con: Merge nightmare.

mouviciel
Yes, if using underperforming tools like Sourcesafe, TFS or Subversion. Less so with a DVCS like git or Mercurial.
Sardaukar
+3  A: 

Pro: Branches can be used to facilitate 'what-if' scenario's in trying out new code. At the end a decision can be made to merge the new feature or to abandon it.

Sardaukar
+2  A: 

Con: Having too many branches in the air at the same time and you start forgetting where things where commited, where changes have been made etc.

Stefan Lundström
A: 

Con: someone has to manage the branch(es) and keep on top of things. In most teams this falls by the way-side.

atc
A: 

Pro: Greater flexibility in diverging code for the purpose of simultaneously developing on or supporting multiple streams of work.

Troy Hunt