Professional Documents
Culture Documents
1
© 2005 IBM Corporation
IBM Software Group
A double-session on
Thursday afternoon?
2
IBM Software Group
3
IBM Software Group
4
IBM Software Group
Session Objectives
After completing this session, you should be able to:
Understand the relationships between UCM components, streams, and
baselines, and the impact these relationships have on UCM change flow
operations (deliver/rebase)
Identify problematic UCM change flow scenarios and how to work through
them
Understand how to best configure and utilize composite baselines
Uncover and solve some common mysteries surrounding the CC/CQ UCM
(SQUID) integration
Make Dave Bellagio proud
5
IBM Software Group
6
IBM Software Group
7
IBM Software Group
8
IBM Software Group
9
IBM Software Group
10
IBM Software Group
SQUID
Change (30 min)
Flow Other
(100 min) Topics
Intro X (15 min)
(10 min) Composite
Break
Baselines
(10 min)
(15 min)
re h er e
You a
11
IBM Software Group
Comp
Base onents,
line
Chan s, a
ge F nd
(a.k low
.a.
deli
reba ver,
se)
12
IBM Software Group
13
IBM Software Group
14
IBM Software Group
Component Refresher
Generally speaking, a component
it a set of related elements
developed, integrated, and
released together
A UCM Component is a set of
Com
elements included in a specific
pA
VOB directory tree i li
Root of component is called n li
b
“Component Root Directory Element” c b
b
Affectionately known internally as a
str im a
.h str tx
CRDE or “cruddy” p.h
.c t.c
flt
Benefits .c
Reduces complexity
Promotes sharing and reuse
15
IBM Software Group
Baseline Refresher
Generally, a baseline is a named,
stable configuration that
represents the integrated work of
team members
im str
A UCM Baseline… str p.h .c tx
Identifies one version of each .h t.c
element in a single component 1 1 1 1
Is immutable 2 2 2
Is created within the context of a 3
UCM stream
• Except for special baselines (e.g.
Initial, Imported baselines)
Is cumulative in that it always
contains the contents of the last
baseline plus some new activity(ies)
16
IBM Software Group
D
A
C
B
17
IBM Software Group
18
IBM Software Group
19
IBM Software Group
Deliver Policies
Separate policies exist for inter-project and intra-project deliver
Policies apply to the target stream
Target stream decides what is acceptable to deliver
Policy Control
Deliver policies are controlled at project AND stream
Project policies govern all streams in the project
Can enable or disable a policy for the entire project
Can defer setting to each individual stream
Stream can enable or disable – project takes precedence
20
IBM Software Group
Note that some policies can override others regardless of their setting
One inter-project policy setting, when disabled will trump all others
Stream-specific policies are meaningless if the project itself does not allow
per-stream settings
21
IBM Software Group
22
IBM Software Group
Feature A Ralph_REL2_Dev
REL2 BL1
REL1_FINAL
Feature B
23
IBM Software Group
24
IBM Software Group
25
IBM Software Group
Integration
BL1
Dev_stream2
Dev_stream1 BL1
BL1
Activity B
26
IBM Software Group
BL1
Act 1 Dev_stream1
Act 2
BL1
BL2
Dev_stream2
BL2
My Bugfix
27
IBM Software Group
By default, deliveries that include changes from other foundations are not
permitted for both intra-project and inter-project deliveries
28
IBM Software Group
BL1
Dev_stream1
BL2
BL1
BL2
Dev_stream2
BL2
My Bugfix
29
IBM Software Group
30
IBM Software Group
BL1 DevB
BL1
DevA
BL1.1
BL1 DevB2
BL1.1
BL2 DevC
BL2
BL2.1 DevC2
BL2.1
31
IBM Software Group
32
IBM Software Group
33
IBM Software Group
N
Y
X
Z M
34
IBM Software Group
You definitely have to read between the lines here. There are a lot of
messages about changes from foundations, etc…. But the bottom line is that
there are components (with changes) in the source stream that are not visible
in the target stream – and this violates the current policy settings.
35
IBM Software Group
36
IBM Software Group
E G I
F H
37
IBM Software Group
38
IBM Software Group
39
IBM Software Group
40
IBM Software Group
BETA
ProjA Integration
BL1
Activity B
Dev_streamA
BL1
Deliver…
BL2
Activity A
REL 1
BL3
41
IBM Software Group
Delivering Baselines
This menu is
inactive in
this context
42
IBM Software Group
Delivering Baselines
43
IBM Software Group
44
IBM Software Group
There are two general classifications for activity dependencies in a source stream:
Change set dependencies (often self-inflicted)
Baseline dependencies (often UCM’s “fault”)
45
IBM Software Group
Deliver Dependencies
Activity dependencies take two forms:
46
IBM Software Group
47
IBM Software Group
Feature X Feature Y
Fix 3
48
IBM Software Group
Unfinished
Fix 3
49
IBM Software Group
50
IBM Software Group
Integration
Integration
Once changes have been made to some element
in a development stream (and a branch instance
has been created in that element), then all
subsequent rebases involving changes to that
BL3
element will require (often trivial) merges – even if 77 Joe Dev
no further changes are ever made to that element trans1
BL3
in the context of the development stream.
Joe
Joe Dev
Dev
deliverA
88
Activity A
11 1
deliverX BL4
Deliver 15
15
RebseBL4
deliverY 22
Deliver 16 BL5
16
RebseBL5
33
51
IBM Software Group
Integration
Integration
Joe
Joe Dev
Dev
deliverA
88
Activity A
11 1
52
IBM Software Group
53
IBM Software Group
54
IBM Software Group
Intermediate development
streams act as GUI_Team
“integration” streams for BL2
Chris_GUI_dev
individual teams
BL2
55
IBM Software Group
Integration
Developers deliver to their sub-team
“integration” stream
BL1
…And subsequently rebase
from baselines created there
Core_Team
BL1
Jim_Core_Dev Jill_Core_dev
GUI_Team
BL2
Chris_GUI_dev
BL2
GUI_BL1
56
IBM Software Group
Core_Team
BL1
Jim_Core_Dev Jill_Core_dev
CORE_BL1
BL1 BL1
deliverA
BL2 Activity A Activity B
deliverB
Deliver Activity C
CORE_BL2
57
IBM Software Group
58
IBM Software Group
59
IBM Software Group
One-Activity-Per-Stream Model
Create a new stream for each new activity
No development stream ever contains more than one activity
Pros
Complete activity independence
• Won’t be forced to combine activities if not desired
Ability to create configurations with arbitrary combinations of activities
Cons
“Porcupine” models are high-overhead
• These models require many streams (and merges)
UCM provides few conveniences to work this way
• “Join Project” wizard may not apply
− Probably favor a straight “create stream” approach for new activities
− New activity must be created as an additional step
• Not SQUID-friendly out of the box
− The WorkOn action cannot create a new stream on the fly
60
IBM Software Group
One-Activity-Per-Stream Example
A single integration stream is
Integration usually the collection point for
all changes within a project A new development
stream is created for
BL1 each new activity
Feature A
Bugfix 123 Feature B BL1
BL1
Each activity is
BL1 BL1
worked in isolation,
Feature A
BL2 independent of all
Feature B others
Bugfix 456
Bugfix 123
BL2
Activities may
be delivered in
any sequence
Bugfix 456
61
IBM Software Group
62
IBM Software Group
Success! Workarnd
63
IBM Software Group
64
IBM Software Group
J L N
K M
65
IBM Software Group
* Restricted operations
66
IBM Software Group
Rebase “Direction”
Advance – New foundation baseline contains current foundation
Revert – New foundation baseline is ancestor of current foundation
Sideways – New foundation baseline is neither ancestor or descendent
68
IBM Software Group
If the new baseline would not strand changes in the stream (or its child streams)
AND the stream would only be delivering its own changes to its parent
69
IBM Software Group
Rel_1.0
trans1 Dev_stream2
trans1
Build_stream trans2 Dev_stream1
trans2
trans1
trans2_deploy
71
IBM Software Group
BL1
Parent
Child
Dev_stream1
BL1 Child
DEVBL1
Dev_stream1A Dev_stream1B
DEVBL1 DEVBL1
Siblings
72
IBM Software Group
BL1
Dev_stream1 Dev_stream2
BL1 BL1
DEV1BL1 DEV2BL1
Dev_stream1A Dev_stream2A
DEV1BL1 DEV2BL1
Cousins
73
IBM Software Group
74
IBM Software Group
BL6 Project N
BLN4 BLZ1
BL9
This failed rebase scenario
came up recently at a customer
deployment
75
IBM Software Group
Example:
Two sibling development streams want to share work
Alternate target deliver allows them to share by merging
work from one stream to the other
Q: What about using rebase? Can one stream rebase to
baselines created by the other development stream?
A: Only if the changes are included in the parent stream
76
IBM Software Group
My Bugfix
77
IBM Software Group
BL1
Dev_stream1
Dev_stream2 BL1
BL1
BL1
First attempt to
rebase will fail
My Bugfix because the BL
is not included in
Dev_stream1’s
DEV_BL parent
Deliver the changes to
the integration stream
(the parent for both of
these dev streams)
78
IBM Software Group
BL1
Dev_stream1
Dev_stream2 BL1
BL1
BL1
My Bugfix
DEV_BL
Deliver the changes to The rebase will
the integration stream now succeed
(the parent for both of
these dev streams)
79
IBM Software Group
80
IBM Software Group
REL2_Integration
REL2_Integration
LABX
15
15 11
81
IBM Software Group
Rebase?
82
IBM Software Group
REL2_Integration
REL2_Integration
LABX 11
15
15 LABX
Rebase LABX
83
IBM Software Group
This error message doesn’t seem very appropriate for this scenario (you’re probably
well aware of the fact that you’ve made changes based on the current baseline).
What UCM is really trying to tell you is that you are attempting to rebase between
two imported baselines (on a stream that contains other changes).
84
IBM Software Group
85
IBM Software Group
Revert BL1
A stream that contains changes may trans1
BL1
BL2
Deliver 2
not revert to a predecessor baseline
This is true whether the changes in the
stream conflict with the existing baseline BL2
or not
Activity A
Revert BL1
Backwards rebase is not a silver bullet for
removing unwanted changes from a stream that
contains other work
86
IBM Software Group
87
IBM Software Group
You can really paint yourself into a corner and take away a lot of rebase
flexibility if your UCM process involves frequent usage of mkbl –ident. Even if
there are no changes in a stream, identical baselines will make the UCM
rebase operation behave as if there are changes in the stream
88
IBM Software Group
89
IBM Software Group
Mathlib1 C5
C5
Alpha1
F2
A1 C3
Gamma2
B2 C1
C1 E1
90
IBM Software Group
Mathlib1 C5
C5
Alpha1
F2
A1 C5
C5
C3 Gamma2
B2 C1
C5
C5 E1
Mathlib1
Alpha1
F2
A1 C5 Gamma2
B2 C1
C5 E1
The GA versions of v2002 and v2003 are restricted – even for rootless
composites. You will need a patch or SR in order to obtain the
changes that loosen the rebase restriction for rootless composites.
92
IBM Software Group
O P
Q
93
IBM Software Group
94
IBM Software Group
95
IBM Software Group
96
IBM Software Group
97
IBM Software Group
98
IBM Software Group
99
IBM Software Group
100
IBM Software Group
101
IBM Software Group
102
IBM Software Group
103
IBM Software Group
104
IBM Software Group
105
IBM Software Group
Integration Development
trans1
Same Foundation
n+1 n
Deliver
rmname
106
IBM Software Group
107
IBM Software Group
Note that if you actually want to keep the changes and reverse the effects of
the rmname operation (upon either deliver or rebase), then you can make the
element “reappear” within a directory by using the “cleartool ln” command.
You might also use “cleartool find . –all –nvisible –print” within a directory to
locate any potentially “missing” elements.
108
IBM Software Group
Wait a minute…
The deliver operation is supposed to detect when the target stream is remotely
mastered and “post” the delivery. Isn’t that a UCM feature?
It is, but that’s not exactly what’s happening in this case. This scenario can be as
confusing as the error message itself. In this case, UCM is actually trying to tell
you that there is already a posted delivery in progress, and that this new delivery
cannot be posted until the first one has been completed.
109
IBM Software Group
Delivery of Activity B
is posted, but not
completed
Activity C
Posted delivery This posted delivery of Activity B temporarily changes the
of Activity C fails mastership of Dev_stream2 to India. This prohibits any subsequent
delivery from Dev_stream2 until the first posted delivery has been
completed at the remote (mastering) replica.
110
IBM Software Group
R
S
111
IBM Software Group
112
IBM Software Group
113
IBM Software Group
115
IBM Software Group
116
IBM Software Group
117
IBM Software Group
Create a stabilization
Stab
activity directly on the
integration stream
Create a selective stable
BL2-STAB
baseline (mkbl –act)
118
IBM Software Group
119
IBM Software Group
120
IBM Software Group
U
T
V
121
IBM Software Group
122
IBM Software Group
123
IBM Software Group
Unlike deliver, there are no policies to protect a user from picking up partial
changes via rebase (since rebase works at the baseline level of
granularity). If an activity’s changes span component boundaries, then this
risk must be mitigated by best practices and not by the rebase operation
124
IBM Software Group
Tight deliver policies are only one mechanism that may be employed to
mitigate the risk of partial change sets. Project managers and users alike
must employ other techniques for avoiding partial change sets during
baseline creation and during rebase.
125
IBM Software Group
126
IBM Software Group
Deliver and rebase aren’t the only operations to watch out for.
Baseline creation should also be an area of concern.
127
IBM Software Group
128
IBM Software Group
Deliver 2
Deliver 3
Deliver 4
Individual activities cannot simply be “pulled
out” of a stream’s configuration
129
IBM Software Group
Start a new “integration” stream that effectively “backs up” to the last good
baseline that does not include the offending changes
This is an easy way to configure a stream without including the offending changes,
but it does not solve the problem of “re-parenting” development streams
UCM has no way to “reparent” a development stream to change its default deliver
target to some other stream – this would be a problem
Any subsequent changes would have to be performed by alternate target deliveries
to the “new” integration stream (and might be potentially confusing to users)
130
IBM Software Group
X
The original activity does not really Activity
The presence of both the original activity and its anti-activity in the same
stream have a canceling effect on one another. If used on a project’s
integration stream to “undo” a deliver activity, this script can be one
solution for (effectively) performing an “undeliver” operation.
131
IBM Software Group
132
IBM Software Group
Deliver 2
Deliver 3 Deliver 3
Deliver 4
133
IBM Software Group
Break Time…
This
appears to
be 2-ply
SQUID
Other
Change
Topics
Flow
Intro X
Composite
Break
Baselines
re h er e
You a
135
IBM Software Group
Comp
o
Base site
line
s
A
A
A
A
A
A
136
IBM Software Group
Composite Baselines
Introduced in v2002 as a means of aggregating multiple disparate baselines into a
single entity
Fulfilled the requirement of a single object to define a common development
environment
Simplified baseline management because only one baseline needs to be specified
for the entire set of baselines
Provided a mechanism to tie together multiple related/unrelated development
components into a hierarchy – either as a flat structure or as a complex geometry
Helped clear up the clutter of multiple baselines in the stream’s foundation by
providing implicit selections of dependent baselines
Supported the use of baseline overrides to supersede the changes brought by
another implicit foundation baseline or to resolve conflicts of a common
component in multiple composite hierarchies
Although composite baselines are a great mechanism for streamlining changes, they are
based on a set of rules which must be understood clearly and completely to do successful
parallel development. Thus, it is imperative that a good deal of thought must be provided
in deciding development strategies including component hierarchies, project policies,
stream hierarchies. rootless/rooted components, release machinery etc.
137
IBM Software Group
138
IBM Software Group
139
IBM Software Group
140
IBM Software Group
A.BL1 B.BL1
R.BL1 Project X
A.BL1
A.BL2 B.BL2
B.BL1 A.BL3 B.BL3
R.BL2 A.BL4 B.BL4
A.BL2
B.BL2
R.BL3 R.BLX
A.BL3 A.BL2
B.BL3 B.BL4
Project X cannot rebase to R.BL3 (or even R.BL1) as it has created a new baseline on the composite
component to capture an overriding baseline of its read-only component. The presence of baseline
R.BLX prevents the project to rebase to other composite baselines as it makes the stream look like its
made changes. Also, it may not be feasible to remove R.BLX if a child dev stream is using it and has
already made changes to either component R or component A.
141
IBM Software Group
142
IBM Software Group
143
IBM Software Group
144
IBM Software Group
Exhibit Y: Why is the other team making baselines on OUR
components ?
This problem relates to an age-old quest of human kind on display of authority.
Team A creates a composite hierarchy on component CompA owned by the team.
The composite hierarchy on CompA contains:
components produced by the team (Aplus, Aminus)
read-only components produced by other teams (Oplus, Ominus).
Team B consumes baselines of CompA but prefers a different version of Oplus and
so overrides a baseline to suit its needs.
Team B plugs this composite hierarchy (with overrides) into its own bigger
composite hierarchy on component CompB.
The composite hierarchy on CompB contains:
components produced by the team (Bplus, Bminus)
read-only components produced by other teams (Aplus, Aminus, Oplus, Ominus)
Team B makes baselines on CompB which has a side effect of making baselines on
CompA to capture the override on Oplus.
Team A is infuriated to see new baselines on CompA created by Team B.
The bottom line here is that in this kind of producer-consumer relationship no one “owns” the composite
component. If you are particular about who owns what, then share your stuff outside of a composite
hierarchy. Alternatively, do it using a rootless component as it imposes fewer restrictions.
145
IBM Software Group
146
IBM Software Group
Exhibit Z: Why can I not create a stream using a baseline
that was in my parent’s foundation previously ?
BootStrap
Project
BS.BL1 Project X
DevStream X.1
BS.BL1
X.BL1
BS.BL2
DevStream X.2
BS.BL1
Although there exists a baseline (X.BL1) on the Project X Integration stream that is a successor of the
baseline BS.BL1, this stream cannot be created as the Integration stream has no recollection of which
baselines it had in its foundation set.
147
IBM Software Group
CQ-E
nabl
ed U
(a.k CM
.a.
“SQU
ID”)
148
IBM Software Group
149
IBM Software Group
150
IBM Software Group
3 crew members of a South Korean freighter (that washed ashore) may have died
after breathing in toxic gas coming from rotting squid organs. The captain of the
vessel is being questioned by the Coast Guard.
The crew members were found dead in two storage rooms and the skipper was
found unconscious. Officers found rotted internal squid organs in these storage
rooms.
Investigators think the members died from lack of oxygen or carbon monoxide
inhalation that was emitted from the decomposing squid. Carbon monoxide and
hydrogen sulfide were both discovered in the cabin.
151
IBM Software Group
152
IBM Software Group
153
IBM Software Group
154
IBM Software Group
155
IBM Software Group
156
IBM Software Group
157
IBM Software Group
Integration
BL1
Dev_stream2
Dev_stream1 BL1
“Bound”
BL1 by SQUID
Activity B
158
IBM Software Group
159
IBM Software Group
Integration
BL1
Dev_stream2
Dev_stream1 BL1
BL1
Activity B
New Act
161
IBM Software Group
This is probably not the best way to temporarily CQ-disable a project, however,
because subsequently re-enabling a project will create all new CQ records for
the project’s activities – it will not re-link them to the original associations.
162
IBM Software Group
163
IBM Software Group
MyProject
Activity A
Activity B
Ucmutil
Chproject cleanup_crm
–ncrmenable only
removes
removes
associations
CC associations
on BOTH(but
sides,
leaves
making
CQ
it difficult
information
to re-establish
intact)links
164
IBM Software Group
165
IBM Software Group
Assign Open
Postpone Waiting Ready Active
Postpone
Duplicate
Duplicate, Close
Submitted Assigned Opened
Postponed Close Resolve
Reject, Re-Open
Duplicate, Validate
Complete
UCM-enablement also
All user-defined states must Resolved requires that a minimal set of
be mapped to one of these default actions exist between
Closed
state types in order to UCM- states mapped to these types
Duplicate
enable the record type.
166
IBM Software Group
BL1
It would be preferable to define SQUID policies on streams.
Core_Team
BL1
Jim_Core_Dev Jill_Core_dev
CORE_BL1
BL1 BL1
deliverA
BL2 Activity A Activity B
“WorkOn”
deliverB
Activity C
Activity C
CORE_BL2
deliver C
Waiting Activity C
No transition
Integ Act
(on Activity C)
Ready Active Complete
occurs here
167
IBM Software Group
Some clever hook and/or trigger writing can get you part way there
today, however this is something that would best be solved
internally within the products and the integration.
The UCM team is considering “out of the box” solutions to this problem for future
releases.
168
IBM Software Group
169
IBM Software Group
170
IBM Software Group
Note that the UCMUtilityActivity record type (the entity type unto
which all deliver and rebase activities are mapped) cannot be edited
by default in the CQ Designer (because it is introduced by way of the
UCM package). You must use the undocumented CQ “packageutil”
command in order to make this record type modifiable.
171
IBM Software Group
172
IBM Software Group
In v2003 SR4, CCRC is not a sliver bullet for all SQUID customers with remote
access needs. MultiSite may still be the better solution for many customers.
173
IBM Software Group
CQ Display UCM Properties yes yes yes yes yes yes yes
CQ Display UCM Change Set yes yes no no yes no yes
CC ops available from cset display yes yes* no no no no yes
CQ ToDo list queries yes yes yes yes yes yes yes
WorkOn action from CQ yes yes no yes no no yes
Check assignment before WorkOn yes yes no yes no no yes
“Show Contributors” action from CQ yes yes no no no no yes
Change “mirrored” field yes yes yes no yes yes yes
174
IBM Software Group
CC checkout/in dropdown list yes yes yes yes yes yes yes
CC checkout/in “Browse” button yes no yes no no no yes
CC checkout/in “New” button yes yes* yes yes no no yes
Display CQ form as property sheet yes yes yes yes no no yes
CQ actions from property sheet (CQ form) yes yes yes yes no no yes
Check before CC delivery hook yes yes yes yes no yes yes
Do CQ action after delivery hook yes yes yes yes no yes yes
Perform transition after delivery yes yes yes yes* no yes* yes
Do CQ action before chact (finish) yes yes yes yes no yes yes
Do CQ action after chact (finish) yes yes yes yes no yes yes
Perform transition after chact (finish) yes yes yes yes* no yes* yes
UCM project creation yes yes no no no no yes*
Changing CQ policies from CC yes yes no no no no yes*
175
IBM Software Group
176
IBM Software Group
177
IBM Software Group
The first two examples are validations that the default hook code
automatically performs when the policy is enabled.
178
IBM Software Group
SQUID
Other
Change
Topics
Flow
Intro X
Composite
Break
Baselines
re h er e
You a
179
IBM Software Group
K
Kitc I
T
hen
Sink
180
IBM Software Group
181
IBM Software Group
182
IBM Software Group
REL1 Integration
“Cascading” Follow-on Projects
BETA …
REL3 Integration RELn Integration
183
IBM Software Group
184
IBM Software Group
185
IBM Software Group
Specifically,
Camel NON-FILTER!
186
IBM Software Group
187
IBM Software Group
188
IBM Software Group
Future Enhancements
Better filtering…
189
IBM Software Group
190
IBM Software Group
191
IBM Software Group
Reporting Workarounds
Sometimes the user has to do a lot of the
heavy lifting when it comes to reporting
due to lack of out-of-the-box support
Some of the bigger challenges involve
reporting across product domains
E.g. CQ only contains reference to a UCM
activity but stores nothing about its change
set versions in CQ itself
CoP is working on harvesting solutions
that have already been implemented in
the field
192
IBM Software Group
Session Summary
Now that you have completed this session, you should be able to:
Understand the relationships between UCM components, streams, and
baselines, and the impact these relationships have on UCM change flow
Identify problematic UCM change flow scenarios and how to work through them
Understand how to best configure and utilize composite baselines
Uncover and solve some common mysteries surrounding the CC/CQ UCM
(SQUID) integration
193
IBM Software Group
Congratulations!
UCM
Detective
195
IBM Software Group
1 2 3 4 5
7’ 7’
6’ 6’
5’ 5’
4’ 4’
3’ 3’
2’ 2’
196
® ®
The End
Bryan Miller bryan.miller@us.ibm.com
Ralph Capasso ralph.capasso@us.ibm.com
Maneesh Mehra mmehra@us.ibm.com
197
© 2005 IBM Corporation