[SCM] - Sharing components between streams
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
Chemi wrote:
Hi, reading Workshop material (Project growth and multi-stream dev 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. |
Geoffrey Clemm (30.1k●3●30●35)
| 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 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 |
Geoffrey Clemm (30.1k●3●30●35)
| 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. |
Geoffrey Clemm wrote:
Note that in Jazz SCM, you can define a workspace to "flow" to multiple 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. |
Chemi wrote:
Hi Geoff. Thanks a lot for your comments, I see things clearer now. 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
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.