Professional Documents
Culture Documents
Essentials of Rational Clearcase Module 7: Integrating Parallel Development
Essentials of Rational Clearcase Module 7: Integrating Parallel Development
1
Objectives
Upon completing this module, you should be able to:
Discuss when it is advantageous to branch
List common branch types and explain when
you might use them
Perform advanced merges
Merge and compare non-ClearCase files
2
Topics
Branching
Branching — review
Why branch?
Types of branches
Instantiating branch types
Merging
Performing special types of merges
• Unreserved checkout
• Selective merge
• Subtractive merge
Merging and comparing non-ClearCase files
3
Branching: Review
Branching is a technique to isolate change and
enable parallel development
Branching controls the public and private nature
of work
Branch only when you want to make changes
Typically, parallel branches are eventually
merged into a resulting product
Configuration managers, ClearCase
administrators, or project leads typically define
the organization branching and merging policies
4
Why Branch?
When you need project level parallel development of
a common base (ports, spin-offs)
When you want to isolate aspects of the product’s
evolution (release area, patch area, development
area)
When you work on a long-range task and want to
save and baseline your own work (private branches)
When you are working on a new feature and don’t
want to have an impact on other developers
When you need to organize your work by location for
use with ClearCase MultiSite
5
Types of Branches: Integration
Branches
Branches designated for integrating development work
Allows you to work on multiple development threads
concurrently
Examples include
/main
Project branches
Release branches
Feature branches
6
Integration Branch Example: Project
Branch
Branch used for each separate releasable product
All development for a
particular project occurs
only on the project branch
Can be just /main in
simple environments
7
Integration Branch Example: Release
Branch
Branch designated for holding official releases of a
product
Facilitates tracking changes
among releases
Keeps version trees compact
8
Integration Branch Example: Feature
Branch
Branch designated for work on a specific feature
Facilitates tracking the development of individual
modules and integration of the modules into project
development branches
9
Types of Branches: Maintenance
Branches
Branch to track bug fixes
and integrate them into
project or release
branches
Can generate patch
versions
Several maintenance
efforts in parallel may
require a maintenance
Integration
10
Types of Branches: Developer
Branches
Branch designated for long-range or high-risk
individual development
Facilitates tracking the
development of
individual modules and
integration of the
modules into project
and release branches
11
MultiSite Branches
ClearCase MultiSite replicates and synchronizes
VOBs across distant sites
Branches support parallel development across sites
Branches are ‘mastered’ by individual sites
Some integration may
occur at replicated sites
One site is usually
responsible for ‘release’
branch
12
Viewing Branch Types
13
Creating Branch Instances Using the
Config Spec
Once a branch type exists, you can create instances
of that branch type
Preferred method of instantiating branch types is
using the –mkbranch clause in the config spec
The -mkbranch clause can be used to implement
complex branching policies and to ensure consistent
branching of elements
14
Multiple-Level Auto-Branching
A config spec can include a “cascade” of
-mkbranch rules:
element * CHECKEDOUT
element * /main/r2_int/pat_r2/LATEST
element * /main/r2_int/LATEST -mkbranch pat_r2
element * R1 -mkbranch r2_int
15
Multiple-Level Auto-Branching (cont.)
Rule 1: element * CHECKEDOUT
Rule 2: element * /main/r2_int/pat_r2/LATEST
Rule 3: element * /main/r2_int/LATEST -mkbranch pat_r2
Rule 4: element * R1 -mkbranch r2_int
16
Multi-Level Auto-Branching: Write
Config Specs
1. 2.
17
Topics
Branching
Branching — review
Why branch?
Types of branches
Instantiating branch types
Merging
Performing special types of merges
• Unreserved checkout
• Selective merge
• Subtractive merge
Merging/comparing non-ClearCase files
18
Merging an Unreserved Checkout
You cannot check in an unreserved checkout if there are
successor versions
The unreserved checkout must be merged with LATEST
before you can check in
19
Merging an Unreserved Checkout
(cont.)
There are two checkouts: After Alex checks in his After Pat merges Alex’s
one reserved and one reserved checkout changes into her
unreserved version and checks in
20
Selective Merge
Selects changes from
specific versions from a
branch to merge
Use the –insert option with
merge command
No merge arrow in Version
Tree Browser
21
Selective Merge: Example
Scenario: Integrate bug fix changes of /r1_bugfix/3 into /r2 branch
22
Subtractive Merge
Removes changes made in one
or more of its predecessors from
a checked-out version
The –delete option indicates the
version or range of versions to
subtract
No merge arrow in Version Tree
Browser
23
Subtractive Merge: Example
Scenario: The multi-thread algorithm
implemented in element versions 2 and
3 contains a fatal flaw. How do you
back out those changes, but retain
subsequent good changes?
24
Merging Non-ClearCase Files
Use the ClearCase Diff Merge tool to merge files not
under ClearCase control
Example:
cleartool merge –out newfile.txt
c:\file1.txt c:\file2.txt
Use the Diff Merge tool to merge non-ClearCase
files with ClearCase elements
Example:
X:\Hardware\src>cleartool merge -g
-to util.c c:\file1.txt
25
Comparing Non-ClearCase Files
Use the ClearCase Diff Merge tool to compare files not
under ClearCase control
Example:
cleartool diff -g c:\file1.txt c:\file2.txt
26
Module Review
Why might you want to create a branch?
How do you know what branch types are available?
What is the recommended way to create branch
instances?
What do you do if you want to check in an
unreserved checkout, but there are successor
versions?
What is a selective merge? Why would you perform
one?
What is a subtractive merge? Why would you
perform one?
27
Module Lab
In this lab, you perform the following tasks:
Use the ClearCase GUI to view branch types
Perform a selective merge
Use the command line interface to
• Compare and merge non-ClearCase files
• Perform a subtractive merge
28