It's all about the answers!

Ask a question

propagating changes between streams


Pravesh Patel (37612615) | asked Feb 04 '08, 11:19 a.m.
We have 1 base component and 10 subcomponents which depend on the base component, but are otherwise independent of each other. We want to continue to use CC and for the time being continue to produce periodic integration build from CC, but produce daily builds from Jazz. The base component is fairly stable, but may change from time to time. The 10 subcomponents are actively being developed.

I'd like to solicit some advice on how best to organize my Streams in Jazz.

Here is how I think it should be done:
- Create a parent "Integration" stream in Jazz
- Create 11 child "Development" streams in Jazz with the above as parent
- Build from the parent "Integration" stream every few hours (see question below)
- Every few hours, sync the parent "Integration" Stream in Jazz with the Development Stream in CC.
- Prior to the ?weekly? Integration builds from CC, manually rebase/deliever from the Development Stream into the Integration Stream in CC.

From what I understand, in Jazz, child Streams do not automatically flow into parent streams. How do I propogate these changes in the component "development" streams to the parent "integration" stream in an automated fashion?

As far as I know, the only way to do this is to create a workspace for each of the 11 components' Development Streams and manually accept and deliver changes to the parent "integration" stream. Please tell me there is a better way!

Thanks!

7 answers



permanent link
Geoffrey Clemm (30.1k33035) | answered Feb 04 '08, 12:38 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Are you planning on using the ClearCase Connector to synchronize your
changes? If so, how this is set up in Jazz will depend upon how it is
currently set up in ClearCase.

In particular, are you using UCM or non-UCM ClearCase?

If you are using UCM, are your base component and subcomponents each in
a separate UCM component? (In UCM ClearCase, each UCM component is
mapped too a Jazz component.)

If you are using non-UCM ClearCase, are your base component and
subcomponents all in the same VOB? (In non-UCM ClearCase, a VOB is
mapped to a single Jazz component).

Once we settle on your component structure, we can discuss your stream
structure. Note that it is likely that your Jazz stream structure will
probably mimic your UCM stream structure, or your non-UCM branch-type
structure.

Cheers,
Geoff (ClearCase Connector team)

pravesh wrote:
We have 1 base component and 10 subcomponents which depend on the base
component, but are otherwise independent of each other. We want to
continue to use CC and for the time being continue to produce
periodic integration build from CC, but produce daily builds from
Jazz. The base component is fairly stable, but may change from time
to time. The 10 subcomponents are actively being developed.

I'd like to solicit some advice on how best to organize my Streams in
Jazz.

Here is how I think it should be done:
- Create a parent "Integration" stream in Jazz
- Create 11 child "Development" streams in Jazz with the
above as parent
- Build from the parent "Integration" stream every few hours
(see question below)
- Every few hours, sync the parent "Integration" Stream in
Jazz with the Development Stream in CC.
- Prior to the ?weekly? Integration builds from CC, manually
rebase/deliever from the Development Stream into the Integration
Stream in CC.

From what I understand, in Jazz, child Streams do not automatically
flow into parent streams. How do I propogate these changes in the
component "development" streams to the parent
"integration" stream in an automated fashion?

As far as I know, the only way to do this is to create a workspace for
each of the 11 components' Development Streams and manually accept
and deliver changes to the parent "integration" stream.
Please tell me there is a better way!

Thanks!

permanent link
Pravesh Patel (37612615) | answered Feb 04 '08, 3:19 p.m.
Geoff,


Yes, I would like to use the CC Connector to sync the changes between Jazz and CC.

We are using UCM CC (w/o CQ integration). All of our components are in a single VOB as individual Eclipse projects.

Currently each Team Development Stream has the Jazz Integration Stream defined as it parent. This parent Integration stream is currently synchronizing all projects with a CC Development Stream.

Does that sound like the right setup for my situation?

I'd like to do daily builds from the Jazz Integration Stream and integration builds from the CC Integration Stream. So the issue/question is how to automatically propogate changes from the Team Development Streams to the Jazz Integration Stream in order to create daily build. There should not be any conflict resolution between the Team Stream and the Jazz Integration Stream.

permanent link
Geoffrey Clemm (30.1k33035) | answered Feb 04 '08, 6:08 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
When you say "automatically propagate changes from Team Dev Streams" to
"Jazz Integration Stream", what did you have in mind? All changes to a
Jazz SCM stream result from an explicit operation, so if you want
changes delivered from a Team Stream to an Integration Stream, you'd
need an explicit user action, or some automatically scheduled action
(such as a build job). You could for example, have the build job
automate the delivery.

When you say "there should not be any conflict resolution", is that
because all changes to a given component are made by only one team, and
so only one Team Stream ever has changes to a given component? If so,
that can be problematic when an interface change requires changes to
components owned by different teams.

Cheers,
Geoff

pravesh wrote:
Yes, I would like to use the CC Connector to sync the changes between
Jazz and CC.

We are using UCM CC (w/o CQ integration). All of our components are
in a single VOB as individual Eclipse projects.

Currently each Team Development Stream has the Jazz Integration Stream
defined as it parent. This parent Integration stream is currently
synchronizing all projects with a CC Development Stream.

Does that sound like the right setup for my situation?

I'd like to do daily builds from the Jazz Integration Stream and
integration builds from the CC Integration Stream. So the
issue/question is how to automatically propogate changes from the
Team Development Streams to the Jazz Integration Stream in order to
create daily build. There should not be any conflict resolution
between the Team Stream and the Jazz Integration Stream.

permanent link
Pravesh Patel (37612615) | answered Feb 04 '08, 7:14 p.m.
Geoff,

Having a build job to automate delivery should work just fine. For example before the Integration Stream builds, it would fetch and accept all of the individual team streams.

When you say "there should not be any conflict resolution", is that because all changes to a given component are made by only one team, and so only one Team Stream ever has changes to a given component?


Yes. The point was that since there is no overlap amongst components under development, there shouldn't be any conflicts to resolve in the Integration stream assuming it could be automated.

If so, that can be problematic when an interface change requires changes to components owned by different teams.


Each "component" in our case is really a individual product. All products share a common infrastructure (the common component). The Team stream would consist of serveral components:
1) the team's specific component under development
2) the team's specific 3rd party dependencies
3) common 3rd party dependencies
4) common component (base classes/interfaces for 1)

As changes occur in 2,3 or 4, a new baseline version would be loaded into each team stream.

So in summary, I think what I'm hearing is that the stream setup is okay. I just need the daily build task to "pull" changes from the Team Streams into the Integration stream before the build.

Now let me see if I can make it happen. Thanks!

permanent link
Pravesh Patel (37612615) | answered Feb 06 '08, 10:55 a.m.
Geoff,

I see ant tasks for TeamAccept, which accepts changes from a parent stream into a build workspace. I don't see a task that delivers changes from a child stream to a parent stream. How would this be done exactly?

permanent link
Geoffrey Clemm (30.1k33035) | answered Feb 06 '08, 12:48 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Perhaps you could call the "accept changes" task multiple times to
accept changes from each of the team streams? But now we've stepped out
of my area of expertise ... perhaps someone from the Jazz Build or Jazz
SCM team could follow-up on this?

Cheers,
Geoff (ClearCase Connector team)

pravesh wrote:
Geoff,

I see ant tasks for TeamAccept, which accepts changes from a parent
stream into a build workspace. I don't see a task that delivers
changes from a child stream to a parent stream. How would this be
done exactly?

permanent link
Ryan Manwiller (1.3k1) | answered Feb 06 '08, 4:48 p.m.
JAZZ DEVELOPER
I see ant tasks for TeamAccept, which accepts changes from a parent
stream into a build workspace. I don't see a task that delivers
changes from a child stream to a parent stream. How would this be
done exactly?


The TeamAccept and TeamFetch tasks are designed to make it easy for an Ant
script to fetch the code to be built to the build machine. To perform other
SCM operations, such as deliver, there is a more general purpose scm command
line tool in /jazz/scmtools/eclipse/scm.exe

Someone from the SCM team would need to answer how to use scm.exe to perform
a delivery.

---
Ryan Manwiller
Jazz Team Build

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.