Microsoft Team Foundation Server Branching Guidance

Want to know how Microsoft handles branching and merging? Then take a look at this great guide for doing branching and merging with TFS available on Codeplex.

In particular, read the Feature Crews: How Microsoft Does It section which discusses the feature crew model which originated in the Office team and is now used in Dev Div.

Here are some key engineering approaches that make it effective:  

Drive to Feature Complete, not simply Code Complete. Finish a feature before adding it to the product - spec, design, implement, automate, test and fix bugs

Use Quality Gates to provide consistency across the division. Define the divisional requirements for Feature Complete. These Quality Gates must be satisfied before adding a feature to the product

Use Feature Branches to isolate new feature development. Each feature gets its own branch.

Only Reverse Integrate the feature branch into the PU branch (covered below) once each of the following is met:

  • The feature is complete
  • The Quality Gates are satisfied

All makes sense, right? Still, it's surprising how many s/w projects blur the line between code complete and feature complete in particular, which as the guide discusses makes it hard to estimate project completion dates due to stabilisation issues. Compounding the problem, it's also hard to reduce scope to make a deadline if a feature has been coded but not stabilised.