code and asset branching best practices session 315 philip wolfe, lead developer farm credit...
TRANSCRIPT
Code and Asset Branching Best Practices
Session 315Philip Wolfe, Lead DeveloperFarm Credit Services of America
Lightning Round Agenda
• Introduction to Source Asset Management• Terms and Definitions• Initial Source Control Setup• Branching for Continuous Integration• Branching for Team Development• Branching to Support Release Activities• Wrap-up
Introduction to Source Asset Management
• As you work on your product, there are different versions of the product in use– Designers have the latest version– Quality Assurance has a stable version– Delivered projects are the “old” version
• Source asset management outlines a way to keep the different versions organized
Terms and Definitions
• Branch (noun) – a copy of the assets– Development (Dev) Branch – A “Work in progress”
version of the project– Main Branch – The most current, stable version of
the project– Release Branch – A copy of the project that
contains what was actually released• Branch (verb) – to make a copy of a folder and
the contents of that folder.
Terms and Definitions
• Merge (verb) – To overwrite the contents of a destination folder with the changes from the source folder– Merging from Dev to Main means to make Main
look Dev– Features vary by Source Control software
• Forward Integrate (FI) – Merge from parent to child
Terms and Definitions
• Reverse Integrate (RI) – Merge from child to parent
• Release Vehicle – How you deliver your product to your customer– Release to Manufacturing (RTM) – A major release
of your project– Service Pack – A release that all customers should
apply– Hotfix – A release that fixes specific defects for
customers affected by those defects (not everyone)
Initial Source Control Setup
Project Name
DEVELOPMENT
MAIN
RELEASE
Source
Source
Source
Initial Source Control Setup
M A I N
D E V E L O P M E N T
Merge
Merge
R E L E A S EM
erge
Mer
ge
Merge
Branching for Continuous Integration
M a i n
D e v e l o p m e n t
Merge
Merge
Merge
Merge
Merge
Merge
Merge
Merge
Branching for Team Development
M a i n
F e a t u r e Te a m 2
F e a t u r e Te a m 1
Merge
Mer
ge
Mer
ge
Merge
R e l e a s e 1
Branching to Support Release Activities
M a i n
R T M
S P 1
R T M
Mer
ge
Mer
geM
erge
D e v e l o p m e n t
Merge
Mer
ge
Mer
ge
Wrap-up
• Branching helps you have multiple running versions of the product at the same time
• Branching helps you support continuous integration
• Branching helps you manage releases• http://tfsbranchingguideii.codeplex.com/