After a lunch-time discussion about branching strategies with TFS I started looking for a good branching guide. The ALM Rangers put together a thorough guide based on lessons learned from real-world deployments. The guide provides general guidance for selecting one of four increasingly complex strategies:
- Basic: Main, development, and release branches
- Standard: Basic + service pack branches
- Advanced: Standard + hot fix branches
- Mature: Single main branch with multiple development, service pack, hot fix, and release branches
Equally important is the discussion about when to create additional development branches:
- Breaking changes: A change in a common library will break other parts of the system until they are updated to reflect the change
- Segregated feature work: A team wants to control when its features are released to other teams
- Next version development: Allows development on the next version to start before the release branch is created
- “Scratch” or Temporary Branches: Prototype work, etc…
If you’re looking for a decent branching strategy guide I recommend starting here. The document is a pretty quick read and well worth the time spent reviewing it but make sure you take some time to review the supplemental materials as well. They have a lot of good information that can help clarify or extend the information in the main guide.
Guide: http://tfsbranchingguideiii.codeplex.com/
ALM Rangers: http://msdn.microsoft.com/en-us/vstudio/ee358786.aspx