It's all about the answers!

Ask a question

[SCM] - Sharing components between streams


Jose Miguel Ordax Cassa (2.4k4126100) | asked May 08 '09, 11:54 a.m.
Hi, reading Workshop material (Project growth and multi-stream dev
presentation) it seems we need to copy physically (deliver and accept)
the component in an "integration" stream as communication stream between
teams.

Is there any update about this topic in RTC 2.0 so a physical copy is
not needed? Reading What's New I didn't find anything.

Thanks in advance,

Chemi.

6 answers



permanent link
Jose Miguel Ordax Cassa (2.4k4126100) | answered May 08 '09, 12:22 p.m.
Chemi wrote:
Hi, reading Workshop material (Project growth and multi-stream dev
presentation) it seems we need to copy physically (deliver and accept)
the component in an "integration" stream as communication stream between
teams.

Is there any update about this topic in RTC 2.0 so a physical copy is
not needed? Reading What's New I didn't find anything.

Thanks in advance,

Chemi.

I found discussion thread "Easy means for multiple streams to share a
component and always latest changes in that component" where it is
discussed another interesting way to achieve this. Not physical copy of
the shared component is needed.

Regards,

Chemi.

permanent link
Geoffrey Clemm (30.1k33035) | answered May 08 '09, 10:08 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Note that a deliver is not in any real sense a "physical copy" ... it is
just a manipulation of some SCM meta-data, often resulting in not much
more than the update of a few database references.

Cheers,
Geoff

Chemi wrote:
Chemi wrote:
Hi, reading Workshop material (Project growth and multi-stream dev
presentation) it seems we need to copy physically (deliver and accept)
the component in an "integration" stream as communication stream
between teams.

Is there any update about this topic in RTC 2.0 so a physical copy is
not needed? Reading What's New I didn't find anything.

Thanks in advance,

Chemi.

I found discussion thread "Easy means for multiple streams to share a
component and always latest changes in that component" where it is
discussed another interesting way to achieve this. Not physical copy of
the shared component is needed.

Regards,

Chemi.

permanent link
Jose Miguel Ordax Cassa (2.4k4126100) | answered May 09 '09, 3:18 a.m.
Hi Geoff. Thanks for your comment.
But I have another question then... because, if anybody update the code
in Stream A, people using that "logical copy" from Stream B won't see
any update until somebody deliver the same changes to Stream B. Right?
That is the reason I thought a physical copy was performed. Am I
correct? If there is not a physical copy, why Stream B doesn't see the
updates? Is there any white paper commenting deeply this behavior (I
have read overviews, and InfoCenter but I didn't really found such deep
concepts).

Thanks again,

Chemi.

Geoffrey Clemm wrote:
Note that a deliver is not in any real sense a "physical copy" ... it is
just a manipulation of some SCM meta-data, often resulting in not much
more than the update of a few database references.

Cheers,
Geoff

permanent link
Geoffrey Clemm (30.1k33035) | answered May 09 '09, 3:50 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Note that it is important to distinguish "a configuration of a
component" from "a component". In particular, multiple streams can
share the same "component", but each stream has its own "configuration
of that component". So if you update the configuration of a component
in one stream (via a deliver operation), it never automatically updates
the configuration of that component in a different stream.

Some poorly designed SCM systems allow two configurations to "share" a
configuration of a component (where an update to the configuration of
that component in one stream automatically updates the configuration of
that component in another stream). The reason I call such SCM systems
"poorly designed" is that the "configuration of a stream" is the most
important SCM object to control ... it is the object that defines the
"product" of an implementation effort (i.e., what you will be delivering
to your customer).

So developers need to be aware of all the streams they are modifying
when they deliver ... so that if the deliver violates the process of one
of those streams, they know which stream it is.

Note that in Jazz SCM, you can define a workspace to "flow" to multiple
streams, and you can configure the pending changes view to show you all
of those target streams, rather than the default which is to just show
the flow target marked as "current". This lets you see what the
relationships are between your workspace and all of the streams you are
delivering to.

WRT my earlier note about a "physical copy" vs. a "logical copy". That
was just to make sure folks knew that you aren't paying the cost of
physically copying all of the files in the workspace to the stream when
they do a deliver. One of the main reasons SCM systems provide this
"shared configuration" capability is that they actually do make physical
copies on deliver, and the shared configuration "feature" is just a hack
to avoid that overhead. They then try to characterize this bug as a
"feature" (:-). Jazz SCM optimizes the performance of deliver, so that
deliver process can be properly enforced while still getting fast delivers.

Cheers,
Geoff


Chemi wrote:
Hi Geoff. Thanks for your comment.
But I have another question then... because, if anybody update the code
in Stream A, people using that "logical copy" from Stream B won't see
any update until somebody deliver the same changes to Stream B. Right?
That is the reason I thought a physical copy was performed. Am I
correct? If there is not a physical copy, why Stream B doesn't see the
updates? Is there any white paper commenting deeply this behavior (I
have read overviews, and InfoCenter but I didn't really found such deep
concepts).

Thanks again,

Chemi.

Geoffrey Clemm wrote:
Note that a deliver is not in any real sense a "physical copy" ... it
is just a manipulation of some SCM meta-data, often resulting in not
much more than the update of a few database references.

Cheers,
Geoff

permanent link
Jose Miguel Ordax Cassa (2.4k4126100) | answered May 13 '09, 4:53 a.m.
Geoffrey Clemm wrote:

Note that in Jazz SCM, you can define a workspace to "flow" to multiple
streams, and you can configure the pending changes view to show you all
of those target streams, rather than the default which is to just show
the flow target marked as "current". This lets you see what the
relationships are between your workspace and all of the streams you are
delivering to.

Hi Geoff. Thanks a lot for your comments, I see things clearer now.

I started to experiment with the suggestion you commented in above
paragraph and I have some more questions.

I have created a Project Area with a single Stream and several reusable
components. Using the new authorization feature in 2.0, just members of
this Project Area's teams can deliver to those reusable components.

I have created another Project Area where an application is going to be
developed reusing first Project Area reusable components. Developers in
this second Project Area, define their Repository workspace pointing to
two different streams: the first one and their Project Area's stream
(set as current and default).

Modifying the pending changes to show all streams, these developers see
automatically changes in the reusable components stream. But when they
accept the changes, a new pending task appears to deliver to the current
stream. I was trying to avoid that. I would like that current stream has
only the code related to the application and not the reusable
components. Developers need the reusable components in their workspaces
for compilation reasons, but not in the application stream to avoid
"duplicate" code (although I understood it is just duplicated
configuration). Is there any way to avoid this deliver pending task if
those components doesn't exist in current stream?

Thanks in advance,

Chemi.

permanent link
Jose Miguel Ordax Cassa (2.4k4126100) | answered May 13 '09, 1:27 p.m.
Chemi wrote:
Hi Geoff. Thanks a lot for your comments, I see things clearer now.

I started to experiment with the suggestion you commented in above
paragraph and I have some more questions.

I have created a Project Area with a single Stream and several reusable
components. Using the new authorization feature in 2.0, just members of
this Project Area's teams can deliver to those reusable components.

I have created another Project Area where an application is going to be
developed reusing first Project Area reusable components. Developers in
this second Project Area, define their Repository workspace pointing to
two different streams: the first one and their Project Area's stream
(set as current and default).

Modifying the pending changes to show all streams, these developers see
automatically changes in the reusable components stream. But when they
accept the changes, a new pending task appears to deliver to the current
stream. I was trying to avoid that. I would like that current stream has
only the code related to the application and not the reusable
components. Developers need the reusable components in their workspaces
for compilation reasons, but not in the application stream to avoid
"duplicate" code (although I understood it is just duplicated
configuration). Is there any way to avoid this deliver pending task if
those components doesn't exist in current stream?

Thanks in advance,

Chemi.

Ok. After reading again all related posts in the forum I found again
(but i think this time I understood it better) a post from Andrew Hoo
about defining two Repository workspaces pointing each one to different
streams and loading both at the same time to have the code in your
Eclipse workspace so compilation will work.

I think this approach will work in my scenario. Let's study little bit
more authorization area to be 100% sure.

Regards,

Chemi.

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.