tfs branching guide - scenarios 2010_20100330

Post on 27-Nov-2015

56 Views

Category:

Documents

11 Downloads

Preview:

Click to see full reader

DESCRIPTION

TFS Branching Guide - Scenarios 2010_20100330

TRANSCRIPT

Team Foundation Server (TFS) – Branching Guidance 2010

2010-03-20 Visual Studio ALM Rangers

· DEVELOPMENT branches Changes for next version work.

· MAIN branch This branch is the junction branch between the development and release branches, representing a stable snapshot

of the product that can be shared with QA or external teams.

· SERVICE PACK (SP) A collection of hotfixes and features targeting a previous product release.

· HOTFIX A change to fix a specific customer blocking bug or service disruption.

· RELEASE branch A branch where ship stopping bug fixes are made before major product release. After product release this branch

usually becomes read-only.

· FORWARD INTEGRATE (FI) Merges from parent to child branches.

· REVERSE INTEGRATE (RI) Merges from child to parent branches.

· RELEASE VEHICLE How your product gets to your customer (e.g. major release, hotfixes and/or service packs).

Basic Branch Plan

The Standard branch plan introduces a new release branch to support an additional release vehicle. Most organizations will call this a servicing branch to enable development of Hotfixes and Service packs.

· You have multiple ship vehicles (e.g. major release and additional service packs for that

release).

· You want to enable concurrent development of service pack and next version products.

· You have any compliance requirements that require you to have an accurate snapshot of your

sources at release time.

The Advanced plan is for products that must support many release vehicles and servicing scenarios. The plan allows for concurrent development of a major release, service packs, hot fixes and next version work.

Vocabulary

BRANCHINGQuick Start

Below is a basic plan that enables concurrent development for your next release, a stable

main branch for testing and a release branch for any ship blocking bug fixes.

Consider when à · You have a single major release that is shipped

(i.e. a single release vehicle) to customers.

· Your servicing model is to have customers upgrade to the next major release.

· Any fixes shipped from the release branch will include all previous fixes from that branch.

Standard Branch Plan

Consider when à

Advanced

Branch Plan

CommonSCENARIOS

For more information, refer to http://tfsbranchingguideiii.codeplex.com

DEV FT1

MAIN

Bra

nch

RI

PRODUCTION

V1.0.1

FI

V1.1 (Release)

V1.0 (hotf ix)

V1.1 Golden

DEV FT2

DEV FT3

Bra

nch

V1.1 FT2

V1.1 FT1

V1.1 FT3

RI

RI

RI

Bra

nch

Bra

nch

FI

V1.1 FT2 (start)

V1.1 FT3 (start)

V1.1 FT1 (start)

V1.1 FT1

VSS

BM

V1.0

FEATURE 1

TEAM 1

RELEASE 1

MAIN

Bra

nch

FEATURE 2

TEAM 2

Bra

nch

Bra

nch

Bra

nch

RI

RI

RI

1

DEV

MAIN

Bra

nch

FI

V1.1 (start) V1.1 FT3

RI

V1.1 (bug f ix)

FI

V1.1

FI

V1.2

RI

V1.2

V1.0

Production

Single Team Branching ModelAllows an organization to improve their engineering practices, by focusing on the flow of

source code throughout the development process, using very simple branching model.

It is imperative that the MAIN branch be stable with the latest customer-ready version

Concurrent Hot Fix, Service Pack and V.Next Branching ModelThis scenario allows organizations to service a released

product with hot fixes, with a cumulative service pack that

includes all approved hot fixes, and the ability to work

simultaneously on the next version of the product.

Multi Feature Teams ScenarioBranching Model

In the Multi Feature Teams

scenario, The DEV now becomes

a container node which contains a

group of branches where each

branch is dedicated for a particular

feature. The MAIN is still a single

branch as alike other scenarios.

When MAIN is ready to release, create

the SERVICE PACK, HOT FIX, and

RELEASE branches at the same time.

The RTM branch is a read-only copy of

what was released

Team, Feature, Release Isolation Branching Model

In this scenario branching is used as a policy for code promotions

and each branch has an owner. The owner of the branch has to

ensure that the policy is enforced (for example code reviews have

been completed).

This scenario is time intensive and involves quite a

number of people.

KE

YS

Branching Node

Label

Milestone

Build

FI Forward Integration

RI Reverse Integration BM Baseless Merge

BR

AN

CH

ES Main

Production

Other

Development

Feature

Release

Changeset

Source Structure

WoodGroveBanking

Dev

Source

Main

Source

$

+

-+

-

Source Structure

+

-

-+

-+

-

WoodGroveBanking

Dev

Dev-1

Source

Dev-2

Main

Source

Production

Source

Dev-3

$

+

+

Source Structure

--

+

+

-

-+

+

-

-

-+

-

+

-

WoodGroveBanking

Dev

Feature1

Source

Feature2

Source

Main

Source

Team

Team1

Source

Team2

Source

$

Production

Release1

Source

Source Structure

+

--

+-

+

-+

+

-

+

-

-

-

WoodGroveBanking

Dev

Dev-1

Source

Dev-2

Source

Main

Source

V1

Hotfix

Source

RTM

Source

Service Pack

Source

V2

$

+

Bra

nch

DEV-1

DEV …

MAIN

R1 (SP)

RTM

Bra

nch

Bra

nch

Bra

nch

Bra

nch

Bra

nch

Bra

nch

Bra

nch

Bra

nch

SERVICE PACK

R2 (SP)

HOT FIX

R1 (SP0) R1 (SP1)

R1 (SP0) R1 (SP1)

R2 (SP0)

R2 (SP0)

FI

1

2

2

3

4

5

6

7

8

DEVELOPMENT

MAIN

Bra

nch

RELEASE

Bra

nch

Development

Production /

Release

flo

w o

f me

rge

s (c

han

ges)

flo

w o

f me

rge

s (c

han

ges)

DEVELOPMENT

MAIN

Bra

nch

SERVICE PACK

RELEASE

Bra

nch

Bra

nch

Development

Production /

Release

flo

w o

f me

rge

s (c

han

ges)

flo

w o

f me

rge

s (c

han

ges)

MAIN

SERVICE PACK

HOT FIX

RELEASE

Bra

nch

Bra

nch

Bra

nch

Production /

Release

flo

w o

f me

rge

s (c

han

ges)

Team Foundation Server (TFS) – Branching Guidance 2010

Visual Studio ALM Rangers

Select the relevant branch,

i.e. Main in the Source

Explorer and select

“Properties” from the

context menu

Default Permissions = Allow R

ead

ers

Pro

ject

Ad

min

istr

ato

rs

Co

ntr

ibu

tors

Bu

ilder

s

Pro

ject

Co

llect

ion

Se

rvic

e A

cco

un

ts

Pro

ject

Co

llect

ion

Bu

ild

Serv

ice

Acc

ou

nts

Pro

ject

Co

llect

ion

A

dm

inis

trat

ors

Read

Check Out

Check In

Label

Lock

Revise other users’ changes

Unlock other users’ changes

Undo other users’ changes

Administer labels

Manage permissions

Merge

Manage Branch

Select the relevant branch, i.e. Feature 1, and

select “Reparent Branch” from the context

menu.

Branches are now First Class ObjectsReparenting Branches

Branch Visualization

Changeset Tracking

Branch Properties

Permissions

Used to establish parent-child relationship between baseless merged branches as well as to alter existing branches' parent-child relationship in a branch hierarchy.

To "reverse" an existing parent-child relationship, the child branch will need to be disconnected from the parent branch via "No parent" option, and then re-parent the former parent branch to the former child branch.

Select the relevant branch, i.e.

Main, from the “Branching and

Merging” context menu and

select “View Hierarchy” option to

obtain a logical and visual view.

You can drag from Dev (33) to Feature1, to

perform a drag and drop merge instruction.

New branch icon emphasizes first class branch objects

Branches enable features such as:· The ability to store properties like

the owner and a comment to each branch

· Viewing the branch hierarchy graphically

· Tracking where and when changesets have been merged

top related