ClearCase Branching, Labeling, and Building
description
Transcript of ClearCase Branching, Labeling, and Building
![Page 1: ClearCase Branching, Labeling, and Building](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/1.jpg)
ClearCase Branching, Labeling, and Building
![Page 2: ClearCase Branching, Labeling, and Building](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/2.jpg)
Branches •Branch only when necessary.
•Branch late.
•Give each branch a policy.
Change propagation
Builds
Processes
![Page 3: ClearCase Branching, Labeling, and Building](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/6.jpg)
One release line per major version
mainline
sw8 line
/sw8sp2
/sw9
/sw9sp1
![Page 7: ClearCase Branching, Labeling, and Building](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/7.jpg)
Each release is a branch
/main
/sw8
/sw8sp1
/sw8sp2
/sw9
/sw9sp1
![Page 8: ClearCase Branching, Labeling, and Building](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/8.jpg)
Cumulative ECN on the same branch
/main
/sw8
8.02-GA
ECN001
Development
MaintenanceECN002
![Page 9: ClearCase Branching, Labeling, and Building](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/9.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/11.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/12.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/13.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/14.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/15.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/16.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/17.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/18.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/19.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/20.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/21.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/22.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/23.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/24.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/25.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/26.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062314/568144cf550346895db19acf/html5/thumbnails/27.jpg)
8.02-SP1-GA
Cumulative ECN on the same branch
/main
/sw8
/sw8sp18.02-GA
ECN001
ECN002
Development
MaintenanceECN002