122
Best Practices for Advanced Best Practices for Advanced Source Control Source Control Beyond CheckOut and CheckIn Beyond CheckOut and CheckIn Steven Wilssens Steven Wilssens Compuware .NET Consultant Compuware .NET Consultant http:// http:// Steven.Wilssens Steven.Wilssens .net .net

Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

Embed Size (px)

Citation preview

Page 1: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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

http://http://www.visug.bewww.visug.be

Page 3: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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

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

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

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

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

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

Branching StrategiesBranching Strategies

Page 10: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Team Foundation Source ControlTeam Foundation Source Control

Page 87: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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

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

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

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
Page 92: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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
Page 94: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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

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

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

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

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

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

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

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

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
Page 104: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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

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

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

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

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

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

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

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

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

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

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
Page 116: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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

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
Page 119: Best Practices for Advanced Source Control Beyond CheckOut and CheckIn Steven Wilssens Compuware.NET Consultant

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

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

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