SlideShare a Scribd company logo
Branching
    in
 TFS 2010

 Part I
   by John Varan
Branching in TFS 2010: Part I

…you need to develop just the right
amount of fear of branching. This
delicate balance seems to be very
difficult to find. Most people either
have too much fear or not enough.”

                             ~Eric Sink
Branching in TFS 2010: Part I


                   Branching is like creating a
                   parallel universe.


• A branch is a child universe spawned off the main
  (parent) universe.

• The child universe evolves independently.

• Branching is for ISOLATION
Branching in TFS 2010: Part I




         A simple parent-child branch
Branching in TFS 2010: Part I
    Why do you need branching?
    Have you ever…

• needed a code freeze?
• wanted to know what code was included in a release?
• wanted to avoid releasing code that wasn’t ready?
• wanted to allow developers to have an experimental
  playground?
• found yourself putting everything on hold for refactoring?

    If you answered yes to any of these, you need branching!
Branching in TFS 2010: Part I
Some basic branching terminology:
• Main Branch – the primary branch that all changes are
  eventually merged into. Also known as the trunk or
  mainline branch.

• Development Branch – contains all active development.
  In many scenarios, it’s the same as the main branch.

• Release Branches – each release of a product should
  create a new branch, as a child of the main branch.
Branching in TFS 2010: Part I

• Forward Integration – the act of merging changes from a
  parent to a child branch.
Branching in TFS 2010: Part I

• Reverse Integration – the act of merging changes from a
  child to a parent branch.
Branching in TFS 2010: Part I

• Baseless Merge – the act of merging changes from one
  branch to another, where the two branches are not in a
  parent-child relationship.
Branching in TFS 2010: Part I



 Branching can be tricky, and it does
 require some skill.

 Discipline is the key!
Branching in TFS 2010: Part I
  Five Keys to Making Branching Successful

• Stick to correct process, even if it seems trivial.

• Avoid branches off other branches, if possible.

• Merge with Forward and Reverse Integration often.

• Do not confuse branching with shelving.

• Never have code freezes.
Branching in TFS 2010: Part I
         Seven Signs Something is Wrong
• Merging is put off to the end.

• Merging happens too often.

• Merging never happens.

• Purpose of a branch isn’t clear.

• You find yourself having to halt development efforts.

• Branches are used to isolate developers instead of code.

• A change is merged to an older release.
Branching in TFS 2010: Part I
           Branching Patterns


• There are 3 primary patterns.

• Each has several variations.

• Hybrid patterns are also possible.
Branching in TFS 2010: Part I
            Release Branching


• Two main variations: stairstep and
  mainline.

• Simplest pattern

• Least flexible
Branching in TFS 2010: Part I
          Stairstep Release Branching

•   Works on single release at a time.

•   New branch for each release.
Branching in TFS 2010: Part I
          Stairstep Release Branching

•   Requires least amount of branching

•   Not very flexible

•   Can require multiple test and build
    environments
Branching in TFS 2010: Part I
          Mainline Release Branching

•   One main branch continues indefinitely

•   Each release branches off of it
Branching in TFS 2010: Part I
          Mainline Release Branching

•   Supports concurrent release development

•   Complex

•   Can require multiple test environments
Branching in TFS 2010: Part I
               Quality Branching

•   Usually has 3 separate branches

•   Changes are “promoted” from one to the other
Branching in TFS 2010: Part I
               Quality Branching

•   More flexible

•   Complex

•   Can require a dedicated person to manage
    branching
Branching in TFS 2010: Part I
                Feature Branching

•   Separate branch for each major feature

•   Very flexible
Branching in TFS 2010: Part I
               Feature Branching

•   Most flexible

•   Complex

•   Can require separate test environment per
    feature (but there’s a workaround)
Branching in TFS 2010: Part I
              Agile Development

•   Shouldn’t make a difference whether you use
    Agile or not

•   But it does…

•   When do you run continuous builds?

•   Which branches cause continuous builds?
Branching in TFS 2010: Part I
               Agile Development

•   Feature branching (or a hybrid of it) is most
    suitable for Agile

•   Feature branch = story branch

•   Continuous build tied to main branch only, not
    to each feature branch
Branching in TFS 2010: Part I
                  Shared Code

How to handle shared libraries and code?

• Many ways to solve this problem

• Sharing the actual source isn’t ideal
  • Complicated
  • Problematic with automated builds
  • Inflexible
Branching in TFS 2010: Part I
                  Shared Code

Instead, share the compiled binary assembly.

• Shared library is a separate project

• Compiled assembly stored in TFS

• Versions of compiled assembly are branched into
  the “Lib” folder of a referencing project
Branching in TFS 2010: Part I
                    End of Part I

Part II: Our solution and how to configure and use it
in TFS.
Ad

More Related Content

Similar to Branching in TFS 2010 Part I (Branching Theory) (20)

Branching and Merging and Bears, Oh My!
Branching and Merging and Bears, Oh My!Branching and Merging and Bears, Oh My!
Branching and Merging and Bears, Oh My!
Imaginet
 
Team Foundation Server - Source Control
Team Foundation Server - Source ControlTeam Foundation Server - Source Control
Team Foundation Server - Source Control
Dhirendra Singh
 
Tfs branching guide_main_2010_v1
Tfs branching guide_main_2010_v1Tfs branching guide_main_2010_v1
Tfs branching guide_main_2010_v1
Timo Kuisma
 
Tfs development
Tfs developmentTfs development
Tfs development
Andy Bhatnagar
 
TFS Source Control Management
TFS Source Control ManagementTFS Source Control Management
TFS Source Control Management
Chaminda Chandrasekara (MVP)
 
Trunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsTrunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and Economics
Perforce
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices
Rajesh Kumar
 
TFS 2010: Team Development on Crack
TFS 2010: Team Development on CrackTFS 2010: Team Development on Crack
TFS 2010: Team Development on Crack
Steve Lange
 
Source control branching and merging guidelines
Source control branching and merging guidelinesSource control branching and merging guidelines
Source control branching and merging guidelines
Orbit One - We create coherence
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
Ori Donner
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development Explored
Carlos Lopes
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
InCycleSoftware
 
Git branching model
Git branching modelGit branching model
Git branching model
Gian Maria Ricci
 
Introduction to TFS 2013
Introduction to TFS 2013Introduction to TFS 2013
Introduction to TFS 2013
Md. Mahedee Hasan
 
Application Lifecycle Management with TFS
Application Lifecycle Management with TFSApplication Lifecycle Management with TFS
Application Lifecycle Management with TFS
Mehdi Khalili
 
Chicago alm user group tfs version control poster - tfvc and git
Chicago alm user group   tfs version control poster - tfvc and gitChicago alm user group   tfs version control poster - tfvc and git
Chicago alm user group tfs version control poster - tfvc and git
Dave Burnison
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?
Bruno Capuano
 
Application versioning
Application versioningApplication versioning
Application versioning
Ted Steinmann
 
Team Foundation Server 2008 Overview
Team Foundation Server 2008 OverviewTeam Foundation Server 2008 Overview
Team Foundation Server 2008 Overview
Steve Lange
 
Session #6: Get More Bang For Your Buck
Session #6: Get More Bang For Your BuckSession #6: Get More Bang For Your Buck
Session #6: Get More Bang For Your Buck
Steve Lange
 
Branching and Merging and Bears, Oh My!
Branching and Merging and Bears, Oh My!Branching and Merging and Bears, Oh My!
Branching and Merging and Bears, Oh My!
Imaginet
 
Team Foundation Server - Source Control
Team Foundation Server - Source ControlTeam Foundation Server - Source Control
Team Foundation Server - Source Control
Dhirendra Singh
 
Tfs branching guide_main_2010_v1
Tfs branching guide_main_2010_v1Tfs branching guide_main_2010_v1
Tfs branching guide_main_2010_v1
Timo Kuisma
 
Trunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsTrunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and Economics
Perforce
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices
Rajesh Kumar
 
TFS 2010: Team Development on Crack
TFS 2010: Team Development on CrackTFS 2010: Team Development on Crack
TFS 2010: Team Development on Crack
Steve Lange
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
Ori Donner
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development Explored
Carlos Lopes
 
Application Lifecycle Management with TFS
Application Lifecycle Management with TFSApplication Lifecycle Management with TFS
Application Lifecycle Management with TFS
Mehdi Khalili
 
Chicago alm user group tfs version control poster - tfvc and git
Chicago alm user group   tfs version control poster - tfvc and gitChicago alm user group   tfs version control poster - tfvc and git
Chicago alm user group tfs version control poster - tfvc and git
Dave Burnison
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?
Bruno Capuano
 
Application versioning
Application versioningApplication versioning
Application versioning
Ted Steinmann
 
Team Foundation Server 2008 Overview
Team Foundation Server 2008 OverviewTeam Foundation Server 2008 Overview
Team Foundation Server 2008 Overview
Steve Lange
 
Session #6: Get More Bang For Your Buck
Session #6: Get More Bang For Your BuckSession #6: Get More Bang For Your Buck
Session #6: Get More Bang For Your Buck
Steve Lange
 

Recently uploaded (20)

RDM Training: Publish research data with the Research Data Repository
RDM Training: Publish research data with the Research Data RepositoryRDM Training: Publish research data with the Research Data Repository
RDM Training: Publish research data with the Research Data Repository
CSUC - Consorci de Serveis Universitaris de Catalunya
 
Secondary Storage for a microcontroller system
Secondary Storage for a microcontroller systemSecondary Storage for a microcontroller system
Secondary Storage for a microcontroller system
fizarcse
 
CloudStack + KVM: Your Local Cloud Lab
CloudStack + KVM:   Your Local Cloud LabCloudStack + KVM:   Your Local Cloud Lab
CloudStack + KVM: Your Local Cloud Lab
ShapeBlue
 
TAFs on WebDriver API - By - Pallavi Sharma.pdf
TAFs on WebDriver API - By - Pallavi Sharma.pdfTAFs on WebDriver API - By - Pallavi Sharma.pdf
TAFs on WebDriver API - By - Pallavi Sharma.pdf
Pallavi Sharma
 
SQL Database Design For Developers at PhpTek 2025.pptx
SQL Database Design For Developers at PhpTek 2025.pptxSQL Database Design For Developers at PhpTek 2025.pptx
SQL Database Design For Developers at PhpTek 2025.pptx
Scott Keck-Warren
 
Interactive SQL: SQL, Features of SQL, DDL & DML
Interactive SQL: SQL, Features of SQL,  DDL & DMLInteractive SQL: SQL, Features of SQL,  DDL & DML
Interactive SQL: SQL, Features of SQL, DDL & DML
IsakkiDeviP
 
Breaking it Down: Microservices Architecture for PHP Developers
Breaking it Down: Microservices Architecture for PHP DevelopersBreaking it Down: Microservices Architecture for PHP Developers
Breaking it Down: Microservices Architecture for PHP Developers
pmeth1
 
The fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team TopologiesThe fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team Topologies
Patricia Aas
 
Proposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStack
Proposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStackProposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStack
Proposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStack
ShapeBlue
 
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdfICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
Eryk Budi Pratama
 
UX Change Fatigue: Building Resilient Teams in Times of Transformation by Mal...
UX Change Fatigue: Building Resilient Teams in Times of Transformation by Mal...UX Change Fatigue: Building Resilient Teams in Times of Transformation by Mal...
UX Change Fatigue: Building Resilient Teams in Times of Transformation by Mal...
UXPA Boston
 
Accommodating Neurodiverse Users Online (Global Accessibility Awareness Day 2...
Accommodating Neurodiverse Users Online (Global Accessibility Awareness Day 2...Accommodating Neurodiverse Users Online (Global Accessibility Awareness Day 2...
Accommodating Neurodiverse Users Online (Global Accessibility Awareness Day 2...
User Vision
 
Multi-Agent AI Systems: Architectures & Communication (MCP and A2A)
Multi-Agent AI Systems: Architectures & Communication (MCP and A2A)Multi-Agent AI Systems: Architectures & Communication (MCP and A2A)
Multi-Agent AI Systems: Architectures & Communication (MCP and A2A)
HusseinMalikMammadli
 
Harmonizing Multi-Agent Intelligence | Open Data Science Conference | Gary Ar...
Harmonizing Multi-Agent Intelligence | Open Data Science Conference | Gary Ar...Harmonizing Multi-Agent Intelligence | Open Data Science Conference | Gary Ar...
Harmonizing Multi-Agent Intelligence | Open Data Science Conference | Gary Ar...
Gary Arora
 
UiPath AgentHack - Build the AI agents of tomorrow_Enablement 1.pptx
UiPath AgentHack - Build the AI agents of tomorrow_Enablement 1.pptxUiPath AgentHack - Build the AI agents of tomorrow_Enablement 1.pptx
UiPath AgentHack - Build the AI agents of tomorrow_Enablement 1.pptx
anabulhac
 
Pushing the Limits: CloudStack at 25K Hosts
Pushing the Limits: CloudStack at 25K HostsPushing the Limits: CloudStack at 25K Hosts
Pushing the Limits: CloudStack at 25K Hosts
ShapeBlue
 
AI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological ImpactAI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological Impact
SaikatBasu37
 
Outcome Over Output: How UXers Can Leverage an Outcome-Based Mindset by Malin...
Outcome Over Output: How UXers Can Leverage an Outcome-Based Mindset by Malin...Outcome Over Output: How UXers Can Leverage an Outcome-Based Mindset by Malin...
Outcome Over Output: How UXers Can Leverage an Outcome-Based Mindset by Malin...
UXPA Boston
 
Collaborative Design for Social Impact Work by David Kelleher
Collaborative Design for Social Impact Work by David KelleherCollaborative Design for Social Impact Work by David Kelleher
Collaborative Design for Social Impact Work by David Kelleher
UXPA Boston
 
UX for Data Engineers and Analysts-Designing User-Friendly Dashboards for Non...
UX for Data Engineers and Analysts-Designing User-Friendly Dashboards for Non...UX for Data Engineers and Analysts-Designing User-Friendly Dashboards for Non...
UX for Data Engineers and Analysts-Designing User-Friendly Dashboards for Non...
UXPA Boston
 
Secondary Storage for a microcontroller system
Secondary Storage for a microcontroller systemSecondary Storage for a microcontroller system
Secondary Storage for a microcontroller system
fizarcse
 
CloudStack + KVM: Your Local Cloud Lab
CloudStack + KVM:   Your Local Cloud LabCloudStack + KVM:   Your Local Cloud Lab
CloudStack + KVM: Your Local Cloud Lab
ShapeBlue
 
TAFs on WebDriver API - By - Pallavi Sharma.pdf
TAFs on WebDriver API - By - Pallavi Sharma.pdfTAFs on WebDriver API - By - Pallavi Sharma.pdf
TAFs on WebDriver API - By - Pallavi Sharma.pdf
Pallavi Sharma
 
SQL Database Design For Developers at PhpTek 2025.pptx
SQL Database Design For Developers at PhpTek 2025.pptxSQL Database Design For Developers at PhpTek 2025.pptx
SQL Database Design For Developers at PhpTek 2025.pptx
Scott Keck-Warren
 
Interactive SQL: SQL, Features of SQL, DDL & DML
Interactive SQL: SQL, Features of SQL,  DDL & DMLInteractive SQL: SQL, Features of SQL,  DDL & DML
Interactive SQL: SQL, Features of SQL, DDL & DML
IsakkiDeviP
 
Breaking it Down: Microservices Architecture for PHP Developers
Breaking it Down: Microservices Architecture for PHP DevelopersBreaking it Down: Microservices Architecture for PHP Developers
Breaking it Down: Microservices Architecture for PHP Developers
pmeth1
 
The fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team TopologiesThe fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team Topologies
Patricia Aas
 
Proposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStack
Proposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStackProposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStack
Proposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStack
ShapeBlue
 
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdfICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
Eryk Budi Pratama
 
UX Change Fatigue: Building Resilient Teams in Times of Transformation by Mal...
UX Change Fatigue: Building Resilient Teams in Times of Transformation by Mal...UX Change Fatigue: Building Resilient Teams in Times of Transformation by Mal...
UX Change Fatigue: Building Resilient Teams in Times of Transformation by Mal...
UXPA Boston
 
Accommodating Neurodiverse Users Online (Global Accessibility Awareness Day 2...
Accommodating Neurodiverse Users Online (Global Accessibility Awareness Day 2...Accommodating Neurodiverse Users Online (Global Accessibility Awareness Day 2...
Accommodating Neurodiverse Users Online (Global Accessibility Awareness Day 2...
User Vision
 
Multi-Agent AI Systems: Architectures & Communication (MCP and A2A)
Multi-Agent AI Systems: Architectures & Communication (MCP and A2A)Multi-Agent AI Systems: Architectures & Communication (MCP and A2A)
Multi-Agent AI Systems: Architectures & Communication (MCP and A2A)
HusseinMalikMammadli
 
Harmonizing Multi-Agent Intelligence | Open Data Science Conference | Gary Ar...
Harmonizing Multi-Agent Intelligence | Open Data Science Conference | Gary Ar...Harmonizing Multi-Agent Intelligence | Open Data Science Conference | Gary Ar...
Harmonizing Multi-Agent Intelligence | Open Data Science Conference | Gary Ar...
Gary Arora
 
UiPath AgentHack - Build the AI agents of tomorrow_Enablement 1.pptx
UiPath AgentHack - Build the AI agents of tomorrow_Enablement 1.pptxUiPath AgentHack - Build the AI agents of tomorrow_Enablement 1.pptx
UiPath AgentHack - Build the AI agents of tomorrow_Enablement 1.pptx
anabulhac
 
Pushing the Limits: CloudStack at 25K Hosts
Pushing the Limits: CloudStack at 25K HostsPushing the Limits: CloudStack at 25K Hosts
Pushing the Limits: CloudStack at 25K Hosts
ShapeBlue
 
AI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological ImpactAI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological Impact
SaikatBasu37
 
Outcome Over Output: How UXers Can Leverage an Outcome-Based Mindset by Malin...
Outcome Over Output: How UXers Can Leverage an Outcome-Based Mindset by Malin...Outcome Over Output: How UXers Can Leverage an Outcome-Based Mindset by Malin...
Outcome Over Output: How UXers Can Leverage an Outcome-Based Mindset by Malin...
UXPA Boston
 
Collaborative Design for Social Impact Work by David Kelleher
Collaborative Design for Social Impact Work by David KelleherCollaborative Design for Social Impact Work by David Kelleher
Collaborative Design for Social Impact Work by David Kelleher
UXPA Boston
 
UX for Data Engineers and Analysts-Designing User-Friendly Dashboards for Non...
UX for Data Engineers and Analysts-Designing User-Friendly Dashboards for Non...UX for Data Engineers and Analysts-Designing User-Friendly Dashboards for Non...
UX for Data Engineers and Analysts-Designing User-Friendly Dashboards for Non...
UXPA Boston
 
Ad

Branching in TFS 2010 Part I (Branching Theory)

  • 1. Branching in TFS 2010 Part I by John Varan
  • 2. Branching in TFS 2010: Part I …you need to develop just the right amount of fear of branching. This delicate balance seems to be very difficult to find. Most people either have too much fear or not enough.” ~Eric Sink
  • 3. Branching in TFS 2010: Part I Branching is like creating a parallel universe. • A branch is a child universe spawned off the main (parent) universe. • The child universe evolves independently. • Branching is for ISOLATION
  • 4. Branching in TFS 2010: Part I A simple parent-child branch
  • 5. Branching in TFS 2010: Part I Why do you need branching? Have you ever… • needed a code freeze? • wanted to know what code was included in a release? • wanted to avoid releasing code that wasn’t ready? • wanted to allow developers to have an experimental playground? • found yourself putting everything on hold for refactoring? If you answered yes to any of these, you need branching!
  • 6. Branching in TFS 2010: Part I Some basic branching terminology: • Main Branch – the primary branch that all changes are eventually merged into. Also known as the trunk or mainline branch. • Development Branch – contains all active development. In many scenarios, it’s the same as the main branch. • Release Branches – each release of a product should create a new branch, as a child of the main branch.
  • 7. Branching in TFS 2010: Part I • Forward Integration – the act of merging changes from a parent to a child branch.
  • 8. Branching in TFS 2010: Part I • Reverse Integration – the act of merging changes from a child to a parent branch.
  • 9. Branching in TFS 2010: Part I • Baseless Merge – the act of merging changes from one branch to another, where the two branches are not in a parent-child relationship.
  • 10. Branching in TFS 2010: Part I Branching can be tricky, and it does require some skill. Discipline is the key!
  • 11. Branching in TFS 2010: Part I Five Keys to Making Branching Successful • Stick to correct process, even if it seems trivial. • Avoid branches off other branches, if possible. • Merge with Forward and Reverse Integration often. • Do not confuse branching with shelving. • Never have code freezes.
  • 12. Branching in TFS 2010: Part I Seven Signs Something is Wrong • Merging is put off to the end. • Merging happens too often. • Merging never happens. • Purpose of a branch isn’t clear. • You find yourself having to halt development efforts. • Branches are used to isolate developers instead of code. • A change is merged to an older release.
  • 13. Branching in TFS 2010: Part I Branching Patterns • There are 3 primary patterns. • Each has several variations. • Hybrid patterns are also possible.
  • 14. Branching in TFS 2010: Part I Release Branching • Two main variations: stairstep and mainline. • Simplest pattern • Least flexible
  • 15. Branching in TFS 2010: Part I Stairstep Release Branching • Works on single release at a time. • New branch for each release.
  • 16. Branching in TFS 2010: Part I Stairstep Release Branching • Requires least amount of branching • Not very flexible • Can require multiple test and build environments
  • 17. Branching in TFS 2010: Part I Mainline Release Branching • One main branch continues indefinitely • Each release branches off of it
  • 18. Branching in TFS 2010: Part I Mainline Release Branching • Supports concurrent release development • Complex • Can require multiple test environments
  • 19. Branching in TFS 2010: Part I Quality Branching • Usually has 3 separate branches • Changes are “promoted” from one to the other
  • 20. Branching in TFS 2010: Part I Quality Branching • More flexible • Complex • Can require a dedicated person to manage branching
  • 21. Branching in TFS 2010: Part I Feature Branching • Separate branch for each major feature • Very flexible
  • 22. Branching in TFS 2010: Part I Feature Branching • Most flexible • Complex • Can require separate test environment per feature (but there’s a workaround)
  • 23. Branching in TFS 2010: Part I Agile Development • Shouldn’t make a difference whether you use Agile or not • But it does… • When do you run continuous builds? • Which branches cause continuous builds?
  • 24. Branching in TFS 2010: Part I Agile Development • Feature branching (or a hybrid of it) is most suitable for Agile • Feature branch = story branch • Continuous build tied to main branch only, not to each feature branch
  • 25. Branching in TFS 2010: Part I Shared Code How to handle shared libraries and code? • Many ways to solve this problem • Sharing the actual source isn’t ideal • Complicated • Problematic with automated builds • Inflexible
  • 26. Branching in TFS 2010: Part I Shared Code Instead, share the compiled binary assembly. • Shared library is a separate project • Compiled assembly stored in TFS • Versions of compiled assembly are branched into the “Lib” folder of a referencing project
  • 27. Branching in TFS 2010: Part I End of Part I Part II: Our solution and how to configure and use it in TFS.
  翻译: