clearcase branching, labeling, and building

27
ClearCase Branching, Labeling, and Building

Upload: breena

Post on 12-Jan-2016

47 views

Category:

Documents


4 download

DESCRIPTION

ClearCase Branching, Labeling, and Building. High-Level and Low-Level Branching. High-Level Branching Main branch. Release branch. Emergency branch. Low-Level Branching CR branch. User CR branch. Rapid development branch User rapid development branch. High-Level branching. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ClearCase Branching, Labeling, and Building

ClearCase Branching, Labeling, and Building

Page 2: ClearCase Branching, Labeling, and Building

Branches •Branch only when necessary.

•Branch late.

•Give each branch a policy.

Change propagation

Builds

Processes

Page 3: ClearCase Branching, Labeling, and Building

High-Level and Low-Level Branching

High-Level Branching• Main branch.

• Release branch.

• Emergency branch.

Low-Level Branching• CR branch.

• User CR branch.

• Rapid development branch

• User rapid development branch.

Page 4: ClearCase Branching, Labeling, and Building

High-Level branching Branch only when necessary. Branch late. Emergency change on release branch. Specific customer changes on new release branch. Keep propagation under control.

Page 5: ClearCase Branching, Labeling, and Building

One release line per major version

• Isolate logically distinct efforts.

• Each branch has a logical coherent purpose.

• Easy to automate process.

• Easy to verify.

• Easy to understand.

Page 6: ClearCase Branching, Labeling, and Building

One release line per major version

mainline

sw8 line

/sw8sp2

/sw9

/sw9sp1

Page 7: ClearCase Branching, Labeling, and Building

Each release is a branch

/main

/sw8

/sw8sp1

/sw8sp2

/sw9

/sw9sp1

Page 8: ClearCase Branching, Labeling, and Building

Cumulative ECN on the same branch

/main

/sw8

8.02-GA

ECN001

Development

MaintenanceECN002

Page 9: ClearCase Branching, Labeling, and Building

Non cumulative ECN on a specific branch

ECN003

/ecn003

ECN004

/ecn004

/main

/sw8

8.02-GA

ECN001

ECN002

Page 10: ClearCase Branching, Labeling, and Building

Branch only when necessary and late.

Purpose:

•Reduce number of merge and propagation.

•Do not pollute the tree version.

Solution:

•Wait until new release branch is needed.

•Do not create a branch on each element, only on changed elements.

•For a particular release branch create all logical previous branches.

Page 11: ClearCase Branching, Labeling, and Building

Branch only when necessary and late.

/main

/sw8

/sw8sp1

/sw8sp2

0

0

0

0

1

1

1

Item modified for each release, each branch are existing..

8.02-SP1-GA

8.02-GA

8.02-SP2-GA

Page 12: ClearCase Branching, Labeling, and Building

Branch only when necessary and late.

/main

/sw80

0

1

Item modified for 8.02, not for 8.02SP1, branch sw8sp1 does not exist.

8.02-SP1-GA8.02-GA

Page 13: ClearCase Branching, Labeling, and Building

Branch only when necessary and late

/main

/sw8

/sw8sp1

/sw8sp2

0

0

0

0

1

1

Item modified for 8.02 release, not for 8.02SP1, then later for 8.02SP2.

Sw8sp1 and sw8sp2 branches has been created at the same time.

8.02-SP1-GA8.02-GA

8.02-SP2-GA

Page 14: ClearCase Branching, Labeling, and Building

Branch only when necessary and late

/main

/sw8

8.02-GA

ECN0018.02-SP1-GA

Item modified for 8.02 release, and for ECN 001, later 8.02SP1 has been created without specific change, sw8sp1 branch does not exist.

Page 15: ClearCase Branching, Labeling, and Building

Branch only when necessary and late

/main

/sw8

8.02-GA

ECN0018.02-SP1-GA

Item modified for 8.02 release, and for ECN 001, not for 8.02SP1, then a 8.02SP1 ECN has been implemented.

ECN002

/sw8sp1

Page 16: ClearCase Branching, Labeling, and Building

Branch only when necessary and late

/main

/sw8

8.02-GA

ECN001

8.02-SP1-GA

Item modified for 8.02 release, ECN 001, between ECN 001 and 8.02SP1 a change specific 8.02SP1 has been implemented.

/sw8sp1

Page 17: ClearCase Branching, Labeling, and Building

Low-Level branching Branch only when necessary and

late. One branch per CR. Merge in major branch with

another environment, then unit test.

Keep merges under control.

Page 18: ClearCase Branching, Labeling, and Building

One branch per CR.

•Changes are isolated.

•No impact on other developers.

•No impact on integration.

•Going back before merge is made easily.

•Integrate only changes made for the CR.

Page 19: ClearCase Branching, Labeling, and Building

One branch per CR.

/main

sw8

cr0001

0

0

0

1 1

cr0002

0

1

2

CR0001

CR0002

Each change request has a branch. This branch exists only for modified items, then it is merged back to the major branch.

Page 20: ClearCase Branching, Labeling, and Building

Merge only changes made for the CR

main

sw8

CR12000

cr12000

Purpose:

•Developer merges only his change.

• Don’t propagate changes from another CR.

Unit tested

cr11000

CR11000= CR1100

Merge only these changes

Page 21: ClearCase Branching, Labeling, and Building

Merge on major branch in another environment, then unit test.

main

sw8

CR12000

cr12000

Purpose:

•Avoid forgotten private files.

•Avoid forgotten checkins.

•Avoid wrong merges.

•Avoid wrong labels.

Solution:

•Set an integration environment according to the CR.

•Merge from cr branch latest.

•Unit test.

•Check in.

•Lock cr branch and label.

Unit tested

Page 22: ClearCase Branching, Labeling, and Building

Keep merges from cr branch to major branch under control.

main

sw8

cr12000

Purpose:

•Do not accept automatic merge for a non-trivial merge.

•Merge early.

Solution:

•Trivial merge can be automatic.

•Non–trivial merge must not be automatic.

•Changes on major branch are accepted automatically.

•Changes on cr branch must be integrated by hand.

Trivial merge: from cr121110 to sw8 Non-trivial merge: from cr13000 to sw8

main

sw8

cr12000 cr13000

Page 23: ClearCase Branching, Labeling, and Building

Emergency change on release branch.

main

sw8

CR12000

cr12000

SW8.02

cr13000

EECNxxx

CR13000

Purpose:

•Branch are not duplicated.

•Same process as release branch.

EECNxxx on SW8.02 release.

Page 24: ClearCase Branching, Labeling, and Building

Specific customer changes on new release branch.

main

sw8

CR12000

cr12000

SW8.02

sw8ecnXXX

SW8.02_SECNxxx

sw8sp1

SW8.02SP1

Purpose:

•Isolate specific customer changes.

•Same process as release branch.

Be careful:

•Integrate this specific branch into a normal release branch as soon as possible.

•Limit the number of these branches and their live.

Specific ECNXXX on SW8.02 release.

Page 25: ClearCase Branching, Labeling, and Building

Propagate only when necessary.

main

sw8

sw8sp1

•Propagate CR12000, because next release branch exists.

•Propagate only changes made for 12000 CR.

CR12000

•Changes must not appear in sw8sp2, don’t propagate sw8sp2.

main

sw8

sw8sp1

•Do not propagate CR12000, sw8sp2 branch does not exist, even if sp2 release exists.

CR12000

sw8sp2

main

sw8

sw8sp1

CR13000

sw8sp2

CR12000 is for all releases, sp1 and sp2. CR13000 is SP1 specific.

CR11000

Child 12000

Purpose:

•Reduce number of propagation.

•Sp2 branch does not exist •Sp2 branch exists

Page 26: ClearCase Branching, Labeling, and Building

Keep propagation under control.

main

sw8

sw8sp1

CR12000

on CR branchPurpose:

•Changes are isolated.

•No impact on other developers.

•No impact on integration.

Solution:

•Propagate as soon as possible.

•Set an environment according to the child CR.

•Merge from the major branch of the parent CR.

•Then handle the child CR as a normal CR.

Child 12000

Child 12000

Page 27: ClearCase Branching, Labeling, and Building

8.02-SP1-GA

Cumulative ECN on the same branch

/main

/sw8

/sw8sp18.02-GA

ECN001

ECN002

Development

MaintenanceECN002