![Page 1: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/1.jpg)
Best Practices for Advanced Best Practices for Advanced Source ControlSource Control
Beyond CheckOut and CheckInBeyond CheckOut and CheckIn
Steven WilssensSteven WilssensCompuware .NET ConsultantCompuware .NET Consultant
http://http://Steven.WilssensSteven.Wilssens.net.net
![Page 2: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/2.jpg)
http://http://www.visug.bewww.visug.be
![Page 3: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/3.jpg)
Visual Studio User Group Visual Studio User Group BelgiumBelgium
Community Meeting Point
Evening MeetingsEach Month, starting March 2006
3 parts:Round Table
Formal practical covering
Socializing part
http://http://www.visug.bewww.visug.be
![Page 4: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/4.jpg)
Have you ever…Have you ever…
Had a small part of the development team finishing a release, while the others were waiting
Needed to support released versions
Needed to develop multiple versions
![Page 5: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/5.jpg)
Have you ever…Have you ever…
Needed to prepare interim releases for testing
Suffered from integration nightmares
Suffered from source control contention
![Page 6: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/6.jpg)
GoalsGoals
After this session you will be able to:Identify different branching strategies
Choose the appropriate branching strategyIncrease overall product quality
Increase overall process efficiency
Apply the appropriate strategies with Team Foundation Source Control
Start the implementation of continuous integration
![Page 7: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/7.jpg)
ContentContent
Branching strategiesBranching terminologyReasons for branchingDifferent branching strategiesGuidelines on how to adopt the right branching strategy
![Page 8: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/8.jpg)
ContentContent
Team Foundation Source ControlFeaturesHow to implement a branching strategyContinuous integrationSNAP
![Page 9: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/9.jpg)
Branching StrategiesBranching Strategies
![Page 10: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/10.jpg)
Contains:Entire source codeDocumentation files (optional)Anything else necessary to build and release a complete product (optional)
It is sequential and it only grows
Branching TerminologyBranching TerminologyMainline/TrunkMainline/Trunk
Time
Change 1 Change 2
Change 5
Change 4
Trunk
Change 6
Change 3
![Page 11: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/11.jpg)
Copy of another branch (or trunk)Taken at a certain timeContains new developmentsGrows independently of its parentTrunk is a special type of branch
Branching TerminologyBranching TerminologyBranchBranch
Change 1 Change 2
Change 5
Change 4
Branch 1
Trunk
Change 6
Change 3
![Page 12: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/12.jpg)
MergingProcess of taking source files from one branch and applying them to another
Branching TerminologyBranching TerminologyMergingMerging
Change 1
Change 2
Change 5
Change 4
Branch 1
TrunkMerging
Change 6
Change 3
![Page 13: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/13.jpg)
Moving changes from a child branch to the parent branch
Branching TerminologyBranching TerminologyReverse IntegrationReverse Integration
Change 1 Change 2 Change 4
Branch 1
TrunkReverse Integration
Change 5
Change 3
Integration Time!
![Page 14: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/14.jpg)
Possible merge conflicts need to be solved on the Trunk
Branching TerminologyBranching TerminologyReverse IntegrationReverse Integration
Change 1 Change 2 Change 4
Branch 1
TrunkReverse Integration
Change 5
Change 3
Integration Time!
!
![Page 15: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/15.jpg)
Build and unit/component/… test problems are discovered on the trunk!
Branching TerminologyBranching TerminologyReverse IntegrationReverse Integration
Change 2 Change 4
Branch 1
TrunkReverse Integration
Change 5
Change 3
Integration Time!
!
![Page 16: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/16.jpg)
Moving changes from a parent branch to a child branch
Branching TerminologyBranching TerminologyForward IntegrationForward Integration
Change 1 Change 2 Change 4
Branch 1
TrunkFoward Integration
Change 3
Integration Time!
Change 5
![Page 17: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/17.jpg)
Branching TerminologyBranching TerminologyEnd to End ScenarioEnd to End Scenario
Change 1 Change 2 Change 4
Branch 1
Trunk
Change 3
Integration Time!
RI: Reverse Integration
FI: Forward Integration
![Page 18: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/18.jpg)
Branching TerminologyBranching TerminologyEnd to End ScenarioEnd to End Scenario
Change 1 Change 2 Change 4
Branch 1
TrunkFI
Change 3
Integration Time!
Change 5
RI: Reverse Integration
FI: Forward Integration
1
![Page 19: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/19.jpg)
Branching TerminologyBranching TerminologyEnd to End ScenarioEnd to End Scenario
Change 1 Change 2 Change 4
Branch 1
TrunkFI
Change 3
Integration Time!
Change 5
RI: Reverse Integration
FI: Forward Integration
1 2
![Page 20: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/20.jpg)
Branching TerminologyBranching TerminologyEnd to End ScenarioEnd to End Scenario
Change 1 Change 2 Change 4
Branch 1
TrunkFI
Change 3
Integration Time!
Change 5
RI
RI: Reverse Integration
FI: Forward Integration
1
3
2
Change 6
![Page 21: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/21.jpg)
Reasons for branchingReasons for branching
Primary reason for branching:
If concurrent or parallel development must occur!
![Page 22: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/22.jpg)
Reasons for branchingReasons for branching
Need to develop bugfixes/patches for a previous release(s)
Need to support multiple released versions
Need to develop multiple versions at the same time
![Page 23: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/23.jpg)
Reasons for branchingReasons for branching
Need to prepare interim releases for testing
Need to reduce source control contention
Want your team to be productive during the testing phases of the SDLC
![Page 24: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/24.jpg)
Branching StrategiesBranching Strategies
Branch by Release Branch by Purpose
Virtual Build Lab
SNAP
Quality GatesBridge
Branching Strategies
Continuous Integration
![Page 25: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/25.jpg)
Branching StrategiesBranching Strategies
Everything should be made as simple as possible, but not one bit simpler.Albert Einstein
![Page 26: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/26.jpg)
Branching StrategiesBranching Strategies
Branch by Release Branch by Purpose
Virtual Buid Lab
SNAP
Quality GatesBridge
Branching Strategies
Continuous Integration
![Page 27: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/27.jpg)
Branching StrategiesBranching Strategies Branch by ReleaseBranch by Release
Release 1.1 Development
Release to QA Release to Production
QA
Development
Release to QA
ProductionRelease 1.2
Development
Release to QA Release to Production
QA ProductionRelease 1.3
Release to Production
Production
QA
![Page 28: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/28.jpg)
Branching StrategiesBranching Strategies Branch by ReleaseBranch by Release
Approved bug fix
Release 1.1 Development
Release to QA Release to Production
QA
Development
Release to QA
ProductionRelease 1.2
Development
Release to QA Release to Production
QA ProductionRelease 1.3
Release to Production
Production
QA
![Page 29: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/29.jpg)
Branching StrategiesBranching Strategies Branch by ReleaseBranch by Release
Approved bug fix
Release 1.1 Development
Release to QA Release to Production
QA
Development
Release to QA
ProductionRelease 1.2
Development
Release to QA Release to Production
QA ProductionRelease 1.3
Release to Production
Production
QA
Merge bug fix to Release 1.2
![Page 30: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/30.jpg)
Branching StrategiesBranching StrategiesBranch by ReleaseBranch by Release
Approved bug fix
Release 1.1 Development
Release to QA Release to Production
QA
Development
Release to QA
ProductionRelease 1.2
Development
Release to QA Release to Production
QA ProductionRelease 1.3
Release to Production
Production
QA
Merge bug fix to Release 1.2
Merge bug fix to Release 1.3
![Page 31: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/31.jpg)
Branching StrategiesBranching Strategies Branch-by-ReleaseBranch-by-Release
ProvidesSeries of successive baselines
Common base for developers to use in making further changes to code
Simple to use when only supporting 1 version
DrawbacksDoes not support long term parallel development (code chill phase)
Added complexity and overhead to support of released versions
Build-by-bug-number syndrome
![Page 32: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/32.jpg)
Branching StrategiesBranching Strategies Branch-by-ReleaseBranch-by-Release
Build-by-bug-number syndromeOccurs when code gets checked in a branch after the release
:-(Who?
Release Engineer
Assignment? Hand pick only the pinpointed fixes and all bits of code needed
When? Usually at the worst time -> an emergency release
![Page 33: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/33.jpg)
Branching StrategiesBranching Strategies
Branch by Release Branch by Purpose
Virtual Build Lab
SNAP
Quality GatesBridge
Branching Strategies
Continuous Integration
![Page 34: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/34.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Decision to branch is based on the need to satisfy a specific purpose:
Release of software and associated items
Typically mark significant milestones:
Release for Alpha testing
Release for Beta testing
Release to QA for system testing
Release to production
Service Release
![Page 35: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/35.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Trunk Development
Feature Freeze
Alpha 1
Testing
Testing and approved changes only
1
![Page 36: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/36.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Trunk Development
Feature Freeze
Alpha 1
Testing
Alpha n
Testing
Approved Bug Fix n
Testing and approved changes only
1 2
![Page 37: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/37.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Trunk Development
Feature Freeze
Alpha 1
Testing
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Approved Bug Fix n
Testing and approved changes only
1
3
2
![Page 38: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/38.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Trunk Development
Feature Freeze
Code Freeze(Final Release
to QA)
Alpha 1
Testing
Release Candidate
1.0
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Testing
Development
Approved Bug Fix n
Testing and approved changes only
1
3
42
![Page 39: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/39.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Trunk Development
Feature Freeze
Code Freeze(Final Release
to QA)
Alpha 1
Testing
Approved Bug Fix
Release Candidate
1.0
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Testing
Development
Approved Bug Fix n
Testing and approved changes only
1
3
4
5
2
![Page 40: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/40.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Trunk Development
Feature Freeze
Code Freeze(Final Release
to QA)
Alpha 1
Testing
Approved Bug Fix
Release Candidate
1.0
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Testing
RI
Development
Merge approved and tested bug
fix
Approved Bug Fix n
Testing and approved changes only
1
3
4
5
6
2
![Page 41: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/41.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Trunk Development
Feature Freeze
Code Freeze(Final Release
to QA)
Alpha 1
Testing
Approved Release toProduction
Approved Bug Fix
Release Candidate
1.0
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Testing
RTM 1.0
Development
Merge approved and tested bug
fix
Approved Bug Fix n
Testing and approved changes only
1
3
4
5 7
6
2
![Page 42: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/42.jpg)
Branching StrategiesBranching Strategies Branch-by-PurposeBranch-by-Purpose
Drawbacks:More complex
Code chill phase
Advantages:Supports regular releases by design
Supports emergency releases as required
Avoids problems caused by build-by-bug-number syndrome
Lets the developer work from the main branch
![Page 43: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/43.jpg)
Branching StrategiesBranching Strategies
Branch by Release Branch by Purpose
Virtual Build Lab
SNAP
Quality GatesBridge
Branching Strategies
Continuous Integration
![Page 44: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/44.jpg)
Branching StrategiesBranching Strategies BridgeBridge
Trunk Development
Feature Freeze
Code Freeze(Final Release
to QA)
Alpha 1
Testing
Approved Bug Fix
Release Candidate
1.0
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Testing
RI
Development
Merge approved and tested bug
fix
Approved Bug Fix n
Testing and approved changes only
1
3
4
5
6
2
Code Chill Phase
![Page 45: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/45.jpg)
Branching StrategiesBranching Strategies BridgeBridge
Proceed with enhancements not intended for the release currently in progress
Solution:1.Creation of bridge line
2.Apply the enhancements
3.Merge the bridge line back down into the main development line after the release candidate releases
![Page 46: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/46.jpg)
Branching StrategiesBranching Strategies BridgeBridge
Trunk Development
Feature Freeze
Code Freeze(Final Release
to QA)
Alpha 1
Testing
Approved Bug Fix
Release Candidate
1.0
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Testing
RI
Development
Merge approved and tested bug
fix
Approved Bug Fix n
Testing and approved changes only
1
3
4
5
6
2
Bridge
1
Code Chill Phase
![Page 47: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/47.jpg)
Branching StrategiesBranching Strategies BridgeBridge
Trunk Development
Feature Freeze
Code Freeze(Final Release
to QA)
Alpha 1
Testing
Approved Bug Fix
Release Candidate
1.0
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Testing
RI
Development
Merge approved and tested bug
fix
Approved Bug Fix n
Testing and approved changes only
1
3
4
5
6
2
Bridge
1
2
Code Chill Phase
![Page 48: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/48.jpg)
Branching StrategiesBranching Strategies BridgeBridge
Trunk Development
Feature Freeze
Code Freeze(Final Release
to QA)
Alpha 1
Testing
Approved Bug Fix
Release Candidate
1.0
Alpha n
Testing
Beta 1
Testing
Beta n
Testing
Testing
Development
Merge approved and tested bug
fix
Approved Bug Fix n
Testing and approved changes only
1
3
4
5
6
2
Bridge
1
2
3
Code Chill Phase
![Page 49: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/49.jpg)
Branching StrategiesBranching Strategies BridgeBridge
Lets multiple teams work on multiple subprojects in parallel
Allows developers to modify code without impacting other developments
![Page 50: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/50.jpg)
Branching StrategiesBranching Strategies
Branch by Release Branch by Purpose
Virtual Build Lab
SNAP
Quality GatesBridge
Branching Strategies
Continuous Integration
![Page 51: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/51.jpg)
Branching StrategiesBranching StrategiesVirtual Build LabVirtual Build Lab
Specific for a task branchOwned by a specific component or project teamThe owner is responsible for integrating his code into the mainlineEach VBL performs full build and installable releases from code in its source trees and the mainline
![Page 52: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/52.jpg)
Branching StrategiesBranching Strategies
Branch by Release Branch by Purpose
Virtual Build Lab
SNAP
Quality GatesBridge
Branching Strategies
Continuous Integration
![Page 53: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/53.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Build Service
Build Scripts and
Targets
Build Drop Site
Source Control
Build Server
![Page 54: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/54.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Store changeset2
Build Service
Build Scripts and
Targets
Build Drop Site
Source Control
Build Server
![Page 55: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/55.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Store changeset2
3
Build Service
Build Scripts and
Targets
Build Drop Site
Source Control
Build Server
Poll for changes
![Page 56: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/56.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Store changeset2
3
4
Build Service
Build Scripts and
Targets
Build Drop Site
Source Control
Build Server
Retrieve latest version
Poll for changes
![Page 57: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/57.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Store changeset2
3
4
Build Service
Build Scripts and
Targets
Start Build
5
Build Drop Site
Source Control
Build Server
Retrieve latest version
Poll for changes
![Page 58: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/58.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Store changeset2
3
4
Build Service
Build Scripts and
Targets
Start Build
5
Build Drop Site
Execute Build
6
Source Control
Build Server
Retrieve latest version
Poll for changes
![Page 59: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/59.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Store changeset2
3
4
Build Service
Build Scripts and
Targets
Start Build
5
Build Drop Site
Execute Build
6
Copy Binaries
7
Source Control
Build Server
Retrieve latest version
Poll for changes
![Page 60: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/60.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Store changeset2
3
4
Build Service
Build Scripts and
Targets
Start Build
5
Build Drop Site
Execute Build
6
Build Finished
8
Copy Binaries
7
Source Control
Build Server
Retrieve latest version
Poll for changes
![Page 61: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/61.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Source Control Client
Build Store
Continous Integration Service
Continuous Integration Server
Source Control Service
Repository
Check In1
Store changeset2
3
4
Build Service
Build Scripts and
Targets
Start Build
5
Build Drop Site
Execute Build
6
Build Finished
8
Store Build Data
9
Copy Binaries
7
Source Control
Build Server
Retrieve latest version
Poll for changes
![Page 62: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/62.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Advantages:Integration problems are detected and fixed continuouslyEarly warning of broken/incompatible codeImmediate unit testing of all changesConstant availability of a "current" build for testing, demo, or release purposesThe immediate impact of checking-in incomplete or broken code acts as an incentive
![Page 63: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/63.jpg)
Branching StrategiesBranching StrategiesContinuous IntegrationContinuous Integration
Disadvantages:Maintenance overheadNeed for dedicated buildserver(s)Immediate impact of checking-in incomplete or broken code acts as disincentive to provide frequent (backup) check-insIncomplete or broken code is only detected after the code has been added to the repository!
![Page 64: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/64.jpg)
Branching StrategiesBranching Strategies
Branch by Release Branch by Purpose
Virtual Build Lab
SNAP
Quality GatesBridge
Branching Strategies
Continuous Integration
![Page 65: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/65.jpg)
Branching StrategiesBranching Strategies Quality GatesQuality Gates
CriteriaGeneral stability and completeness of the product
Percentage of test coverage on the codebase
Level of documentation provided
Results of a security assessment
Performance and scalability metrics
![Page 66: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/66.jpg)
Branching StrategiesBranching Strategies Quality GatesQuality Gates
How to ensure that only changes that pass the quality gate can be reverse integrated into the parent branch?
Security settings and separate rolesFeature Team, Integration Team, Build Team
Change 1 Change 2
Change 3
Change 4
Feature A
Trunk
Integration TeamFeature Team Build Team
FI: Forward Integration RI: Reverse Integration
![Page 67: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/67.jpg)
Branching StrategiesBranching Strategies Quality GatesQuality Gates
How to ensure that only changes that pass the quality gate can be reverse integrated into the parent branch?
Security settings and separate rolesFeature Team, Integration Team, Build Team
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
Integration TeamFeature Team Build Team
FI: Forward Integration RI: Reverse Integration
1
![Page 68: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/68.jpg)
Branching StrategiesBranching Strategies Quality GatesQuality Gates
How to ensure that only changes that pass the quality gate can be reverse integrated into the parent branch?
Security settings and separate rolesFeature Team, Integration Team, Build Team
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI Build
Integration TeamFeature Team Build Team
FI: Forward Integration RI: Reverse Integration
12
![Page 69: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/69.jpg)
Branching StrategiesBranching Strategies Quality GatesQuality Gates
How to ensure that only changes that pass the quality gate can be reverse integrated into the parent branch?
Security settings and separate rolesFeature Team, Integration Team, Build Team
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
?
Build
Integration TeamFeature Team Build Team
FI: Forward Integration RI: Reverse Integration
12
3
![Page 70: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/70.jpg)
Branching StrategiesBranching Strategies Quality GatesQuality Gates
How to ensure that only changes that pass the quality gate can be reverse integrated into the parent branch?
Security settings and separate rolesFeature Team, Integration Team, Build Team
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
?
RI
Change 6
Build
Integration TeamFeature Team Build Team
FI: Forward Integration RI: Reverse Integration
12
3
4
![Page 71: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/71.jpg)
Branching StrategiesBranching Strategies Quality GatesQuality Gates
How to ensure that only changes that pass the quality gate can be reverse integrated into the parent branch?
Security settings and separate rolesFeature Team, Integration Team, Build Team
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
?
RI
Change 6
Build Build
Integration TeamFeature Team Build Team
FI: Forward Integration RI: Reverse Integration
12
3
4 5
![Page 72: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/72.jpg)
Branching StrategiesBranching StrategiesQuality GatesQuality Gates
Track all check-ins to a secured, locked-down, golden source tree
Reject check-ins that do not comply
Assign integration sponsors for the mainline branch
![Page 73: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/73.jpg)
Branching StrategiesBranching Strategies
Branch by Release Branch by Purpose
Virtual Build Lab
SNAP
Quality GatesBridge
Branching Strategies
Continuous Integration
![Page 74: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/74.jpg)
Branching StrategiesBranching StrategiesSNAPSNAP
Shiny New Automated ProcessUsed to protect the Golden Tree (Quality Gates)First developed by the InfoPath team at MicrosoftUsed by many teams at MicrosoftPlans to release a SNAP system in combination with Team System
![Page 75: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/75.jpg)
Branching StrategiesBranching StrategiesSNAPSNAP
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
Feature Team SNAP
1
RI: Reverse IntegrationFI: Forward Integration
![Page 76: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/76.jpg)
Branching StrategiesBranching StrategiesSNAPSNAP
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
Feature Team SNAP
1
RI: Reverse IntegrationFI: Forward Integration
![Page 77: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/77.jpg)
Branching StrategiesBranching StrategiesSNAPSNAP
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
SNAP
Feature Team SNAP
2
1
RI: Reverse IntegrationFI: Forward Integration
Submit Changes to SNAP
![Page 78: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/78.jpg)
Branching StrategiesBranching StrategiesSNAPSNAP
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
SNAPR
I
Feature Team SNAP
2
13
RI: Reverse IntegrationFI: Forward Integration
Submit Changes to SNAP
![Page 79: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/79.jpg)
Branching StrategiesBranching StrategiesSNAPSNAP
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
SNAPR
I
Feature Team SNAP
2
13
RI: Reverse IntegrationFI: Forward Integration
Submit Changes to SNAP
![Page 80: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/80.jpg)
Branching StrategiesBranching StrategiesSNAPSNAP
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
SNAP
Feature Team SNAP
2
13
?
Build4
RI: Reverse IntegrationFI: Forward Integration
Submit Changes to SNAP
![Page 81: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/81.jpg)
Branching StrategiesBranching StrategiesSNAPSNAP
Change 1 Change 2
Change 3 Change 5
Change 4
Feature A
Trunk
FI
SNAPR
I
Feature Team SNAP
2
1 3
?
Build4
RI: Reverse IntegrationFI: Forward Integration
Submit Changes to SNAP
5Change 6
![Page 82: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/82.jpg)
Branching StrategiesBranching StrategiesVersioningVersioning
What should versioning allow you to do?Track your product binaries to the original source code
Re-create a past build by having meaningful labels
![Page 83: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/83.jpg)
Branching StrategiesBranching StrategiesVersioningVersioning
What should be kept under source control?
Code or documents that are under development – YESYES
Third party or external binaries– IT IT DEPENDSDEPENDS
You can keep third party or external binaries, development tools on a file server
Storing them in a repository will allow you to recreate any build at any time
![Page 84: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/84.jpg)
Guidelines on how to adopt Guidelines on how to adopt the right branching strategy the right branching strategy
RecommendationsUse consistent reverse and forward integration practices across branches
Use atomic check-in when Reverse Integrating
Consider adopting the Branch-by-Purpose model
![Page 85: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/85.jpg)
Guidelines on how to adopt Guidelines on how to adopt the right branching strategy the right branching strategy
RecommendationsThe mainline should always be buildable and consumable
A developer check-in should normally only be made to the private branch, not the golden branch
SNAP/Gauntlet service should protect the golden branch
Use Continuous Integration on all branches except the golden branch
![Page 86: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/86.jpg)
Team Foundation Source ControlTeam Foundation Source Control
![Page 87: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/87.jpg)
TFSC Terminology TFSC Terminology
RepositoryData store that contains all files and folders in TFSC
database
MappingAssociation of a repository path with a local working
folder on a local computer
Working FolderDirectory on client computer that contains local copy of
some subset of files in a repository
![Page 88: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/88.jpg)
TFSC Terminology TFSC Terminology
WorkspaceContains a reference to the repository and a series of
mappings that associate a repository path with a working folder on a users computer
Change setA set of modifications to one or more files/folders that
is atomically applied to a repository at check-in
![Page 89: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/89.jpg)
A Picture of a Check-inVisual Studio
Checkin
ValidatePolicies
11
Checkin PolicyEngine
Checkin PolicyEngine
CommitChanges
22
V1V1V1V1V5V5V5V5V4V4V4V4V5V5V5V5
V2V2V2V2V3V3V3V3
Change Set 727012Change Set 727012Change Set 727012Change Set 727012Change Set 727012Change Set 727012Change Set 727012Change Set 727012
Change Set 727012Change Set 727012Change Set 727012Change Set 727012Change Set 727012Change Set 727012Change Set 727012Change Set 727012
Change Set 727011Change Set 727011Change Set 727011Change Set 727011Change Set 727012Change Set 727012
WorkItem 33231WorkItem 33231
UpdateWork Items
33
Events Raised for3rd party sync purposes
ArtifactLink
WorkspaceWorkspace
Integration Infrastructure
Check E-mailNotification
44
Version Control
Work Item Tracking
Unit
Test
ing
Unit
Test
ing
WI A
ssoci
ati
on
WI A
ssoci
ati
on
Sta
tic
An
aly
sis
Sta
tic
An
aly
sis
Cle
an
Build
Cle
an
Build
Cust
om
Polic
yC
ust
om
Polic
y
![Page 90: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/90.jpg)
TFSC Shelving TFSC Shelving
Scenario1. Working on a new feature
2. A critical bug is found that needs immediate attention
3. Shelve current change set
4. Make changes to address the bug and check-in
5. Unshelve previous change set
6. Sync workspace to merge any modifications that are in the workspace
7. Continue work on the new feature
8. Check in changes
![Page 91: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/91.jpg)
![Page 92: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/92.jpg)
TFSC Terminology TFSC Terminology
Shelve1.Archiving of all modifications in current
change set
2.Replacing those modified files with original files
UnShelve1.Merge current modifications with the
changes in the repository
![Page 93: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/93.jpg)
![Page 94: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/94.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Continuous Integration
Service
Continuous Integration Service
![Page 95: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/95.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Http/SOAP message2
Continuous Integration
Service
Continuous Integration Service
![Page 96: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/96.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Http/SOAP message2
Store ChangeSet3
Continuous Integration
Service
Continuous Integration Service
![Page 97: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/97.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Http/SOAP message2
Store ChangeSet3
Continuous Integration
Service
Continuous Integration Service
![Page 98: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/98.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Http/SOAP message2
Store ChangeSet3
Continuous Integration
Service
Receive Notification
4
Continuous Integration Service
![Page 99: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/99.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Http/SOAP message2
Store ChangeSet3
Continuous Integration
Service
Receive Notification
4
Start Build
5
Continuous Integration Service
![Page 100: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/100.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Execute Build
6
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Http/SOAP message2
Store ChangeSet3
Continuous Integration
Service
Receive Notification
4
Start Build
5
Continuous Integration Service
![Page 101: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/101.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Execute Build
6
Copy Binaries
7
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Http/SOAP message2
Store ChangeSet3
Continuous Integration
Service
Receive Notification
4
Start Build
5
Continuous Integration Service
![Page 102: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/102.jpg)
ContinuousContinuous Integration IntegrationSource Control Client
Eventing and Notification Service
Check In ChangeSet1
Build Service
Build Scripts and
Targets
Build Drop Site
Execute Build
6
Copy Binaries
7
Team Foundation Integration Serivces
Build Server
Team Foundation Object Model (Managed API)
Linking Service Registration Service
Work Item Services Source Code Service Build Data Services
Team Foundation Data Serivces
Methodology
WI SCCBuild Data Warehouse
Team Foundation Data Serivces
Http/SOAP message2
Store ChangeSet3
Continuous Integration
Service
Receive Notification
4
Start Build
5
Continuous Integration Service
Update Build Store
8
![Page 103: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/103.jpg)
![Page 104: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/104.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1 Team Build Service
SNAP Build Scripts and
Targets
Build Drop Site
SNAP
Build Server
![Page 105: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/105.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Team Build Service
SNAP Build Scripts and
Targets
Build Drop Site
SNAP
Build Server
![Page 106: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/106.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
Team Build Service
SNAP Build Scripts and
Targets
Build Drop Site
SNAP
Build Server
![Page 107: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/107.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
4
Team Build Service
SNAP Build Scripts and
Targets
Build Drop Site
SNAP
Build Server
Retrieve Golden Branch
![Page 108: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/108.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
4
5
Team Build Service
SNAP Build Scripts and
Targets
Build Drop Site
SNAP
Build Server
Merge Changes from Feature Branch to Golden Branch
Retrieve Golden Branch
![Page 109: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/109.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
4
5
Team Build Service
SNAP Build Scripts and
Targets
Build Drop Site
SNAP
Build Server
Merge Changes from Feature Branch to Golden Branch
Retrieve Golden Branch
Start Build
6
![Page 110: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/110.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
4
5
Team Build Service
SNAP Build Scripts and
Targets
Start Build
7
Build Drop Site
SNAP
Build Server
Merge Changes from Feature Branch to Golden Branch
Retrieve Golden Branch
Start Build
6
![Page 111: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/111.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
4
5
Team Build Service
SNAP Build Scripts and
Targets
Start Build
7
Build Drop Site
Execute Build
8
SNAP
Build Server
Merge Changes from Feature Branch to Golden Branch
Retrieve Golden Branch
Start Build
6
![Page 112: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/112.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
4
5
Team Build Service
SNAP Build Scripts and
Targets
Start Build
7
Build Drop Site
Execute Build
8
Copy Binaries
9
SNAP
Build Server
Merge Changes from Feature Branch to Golden Branch
Retrieve Golden Branch
Start Build
6
![Page 113: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/113.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
4
5
Team Build Service
SNAP Build Scripts and
Targets
Start Build
7
Build Drop Site
Execute Build
8
Build Finished
10
Copy Binaries
9
SNAP
Build Server
Merge Changes from Feature Branch to Golden Branch
Retrieve Golden Branch
Start Build
6
![Page 114: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/114.jpg)
SNAPSNAP SNAP Client
Team Build Store
TF Warehouse
Source Control
Team Build
Team Build
TFS Data Tier
SNAP SNAP Store
SNAP Request- Project Name
- Source Branch
- Target Branch- Version Specs
1
Enqueue SNAP Request2
Enqueue SNAP Request3
4
5
Team Build Service
SNAP Build Scripts and
Targets
Start Build
7
Build Drop Site
Execute Build
8
Build Finished
10
Store Build Data
11
Copy Binaries
9
SNAP
Build Server
Merge Changes from Feature Branch to Golden Branch
Retrieve Golden Branch
Start Build
6
![Page 115: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/115.jpg)
![Page 116: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/116.jpg)
Take AwayTake Away
Use consistent reverse and forward integration practices across branches
Use atomic check-in when Reverse Integrating
Consider adopting the Branch-by-Purpose model
Reduce code chill phase by using applying the bridge model in combination with Branch-by-Release model
Quality Gates protect the golden branch
![Page 117: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/117.jpg)
Take AwayTake Away
Team System Source Control is pretty advanced
Shelving is a handy feature
Team System Source Control is available to VS 2005, VS 2003, VB 6,... developers
How to implement a Continuous Integration process
How to implement a SNAP System
![Page 118: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/118.jpg)
![Page 119: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/119.jpg)
ResourcesResources
Continuous Integration with Team SystemMSDN Magazine
http://msdn.microsoft.com/msdnmag/issues/06/03/TeamSystem/default.aspx
Branching Models and Team SystemBrian Harry
http://blogs.msdn.com/bharry/
Mitch Dennyhttp://notgartner.com/
Steven Wilssenshttp://Steven.Wilssens/
The Build Master [Vincent Maraia]ISBN: 0-321-33205-9
![Page 120: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/120.jpg)
ResourcesResources
Team SystemRob Caron
http://blogs.msdn.com/robcaron/default.aspx
Professional Visual Studio 2005 Team System ISBN: 0764584367
Working with Microsoft Visual Studio 2005 Team SystemISBN: 0735621853
![Page 121: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/121.jpg)
Thank You!Thank You!
Thanks for your attention
I’ll be happy to answer all your questions:Right after this session
Compuware booth
Visual Studio User Group BoothCommunity Booth: Ask-The-Experts
![Page 122: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant](https://reader035.vdocument.in/reader035/viewer/2022062518/56649f275503460f94c3f927/html5/thumbnails/122.jpg)