Synchronizing multiple RTC streams to ClearCase
I have a situation where I must make the data from two RTC streams available to ClearCase users. Stream one in RTC represents release one of a product, and stream two, based on a snoashot of stream one represents release two of the product. Both streams are active, with bug fixes from stream one occasionally delivered to stream two.
I need to synchronize this to identically organized ClearCase streams so that the ClearCase users can access, and occasionally contribute to either of these streams.
I synchronized stream one with CC, and it worked perfectly, as expected. Now how do I create a second synchronized stream that will work in CC like I expect? In CC terms, I want a label on stream one that corresponds to the RTC snapshot of stream one, and I want stream two to contain a new version of existing elements that have changed in RTC stream two.
The synchronize wizard does not use existing vies or let me specify config specs, so I do not know how to approach this task.
I need to synchronize this to identically organized ClearCase streams so that the ClearCase users can access, and occasionally contribute to either of these streams.
I synchronized stream one with CC, and it worked perfectly, as expected. Now how do I create a second synchronized stream that will work in CC like I expect? In CC terms, I want a label on stream one that corresponds to the RTC snapshot of stream one, and I want stream two to contain a new version of existing elements that have changed in RTC stream two.
The synchronize wizard does not use existing vies or let me specify config specs, so I do not know how to approach this task.
3 answers
Hi Jim,
I'm not quite sure what you are asking ... so I'll make some comments
and see if those answers intersect with the intended question (:-).
In general, you can synchronize multiple streams/branches, but we
recommend keeping that number as small as possible. In addition,
merging between synchronized streams is supported, but you'll want to do
all your inter-synchronized-stream merging in one repository or the
other ... and then just synchronize the results of that merge back to
the other repository (otherwise, you'll find you'll be asked to redo
those merges in the other repository).
So suppose your two branches in ClearCase are named cc-rel-1 and
cc-rel-2. You would just create two different sync streams ... one for
cc-rel-1 and another for cc-rel-2. This would create corresponding
streams in RTC ... let's call them rtc-sync-rel-1 and rtc-sync-rel-2.
It's a bit more convoluted if the streams currently exist in RTC and you
want to export them to CC. In particular, suppose your two streams in
RTC are rtc-rel-4 and rtc-rel-5. You would need to do the following:
- create a new branch type in CC ... cc-rel-4.
- create a sync stream on cc-rel-4, which will create a new rtc stream,
rtc-sync-rel-4. Do not add any sync roots initially. Instead,
deliver rtc-rel-4 to rtc-sync-rel-4. Now you can add your Jazz sync
roots to rtc-sync-rel-4, which will export those changes cc-rel-4.
- repeat for cc-rel-5.
Cheers,
Geoff
On 3/15/2011 9:53 AM, jim.islandtraining.com wrote:
I'm not quite sure what you are asking ... so I'll make some comments
and see if those answers intersect with the intended question (:-).
In general, you can synchronize multiple streams/branches, but we
recommend keeping that number as small as possible. In addition,
merging between synchronized streams is supported, but you'll want to do
all your inter-synchronized-stream merging in one repository or the
other ... and then just synchronize the results of that merge back to
the other repository (otherwise, you'll find you'll be asked to redo
those merges in the other repository).
So suppose your two branches in ClearCase are named cc-rel-1 and
cc-rel-2. You would just create two different sync streams ... one for
cc-rel-1 and another for cc-rel-2. This would create corresponding
streams in RTC ... let's call them rtc-sync-rel-1 and rtc-sync-rel-2.
It's a bit more convoluted if the streams currently exist in RTC and you
want to export them to CC. In particular, suppose your two streams in
RTC are rtc-rel-4 and rtc-rel-5. You would need to do the following:
- create a new branch type in CC ... cc-rel-4.
- create a sync stream on cc-rel-4, which will create a new rtc stream,
rtc-sync-rel-4. Do not add any sync roots initially. Instead,
deliver rtc-rel-4 to rtc-sync-rel-4. Now you can add your Jazz sync
roots to rtc-sync-rel-4, which will export those changes cc-rel-4.
- repeat for cc-rel-5.
Cheers,
Geoff
On 3/15/2011 9:53 AM, jim.islandtraining.com wrote:
I have a situation where I must make the data from two RTC streams
available to ClearCase users. Stream one in RTC represents release
one of a product, and stream two, based on a snoashot of stream one
represents release two of the product. Both streams are active, with
bug fixes from stream one occasionally delivered to stream two.
I need to synchronize this to identically organized ClearCase streams
so that the ClearCase users can access, and occasionally contribute
to either of these streams.
I synchronized stream one with CC, and it worked perfectly, as
expected. Now how do I create a second synchronized stream that will
work in CC like I expect? In CC terms, I want a label on stream one
that corresponds to the RTC snapshot of stream one, and I want stream
two to contain a new version of existing elements that have changed in
RTC stream two.
The synchronize wizard does not use existing vies or let me specify
config specs, so I do not know how to approach this task.
I did something very much like what you describe for code originally authored in RTC, and cannot get the synchronization results I want. I recreated the situation as follows.
Create RTCstream1 and populate it with several components that each contain several files.
Create one VOB in CC for each component, and one branch type.
Create RTC-synch-stream1 and deliver the components from RTCstream1 to RTC-synch-stream1
Select all of the roots in RTC-synch-stream1 and synchronize. Everything is now in CC as expected.
Duplicate RTCstream1, creating RTCstream2, and add new components with several files in each, to stream2
Create another branch type in CC
Create RTC-synch-stream2 and deliver the components from RTCstream2 to RTC-synch-stream2
Select all of the roots in RTC-synch-stream2 and synchronize.
I get a dpulicate version on CCstream2 of everything that is on CCstream1. If I was working in CC, CCstream2 would be based on a label in CCstream1 and I would have a view that selects the new components from CCstream2 and falls back to the labeled version on CCstream1 for everything that has not changed. I do not see a way to tell the synchronizer to use a view of my choosing where I can set the config spec, and where it will discover that unchanged files do not need to be imported again
Create RTCstream1 and populate it with several components that each contain several files.
Create one VOB in CC for each component, and one branch type.
Create RTC-synch-stream1 and deliver the components from RTCstream1 to RTC-synch-stream1
Select all of the roots in RTC-synch-stream1 and synchronize. Everything is now in CC as expected.
Duplicate RTCstream1, creating RTCstream2, and add new components with several files in each, to stream2
Create another branch type in CC
Create RTC-synch-stream2 and deliver the components from RTCstream2 to RTC-synch-stream2
Select all of the roots in RTC-synch-stream2 and synchronize.
I get a dpulicate version on CCstream2 of everything that is on CCstream1. If I was working in CC, CCstream2 would be based on a label in CCstream1 and I would have a view that selects the new components from CCstream2 and falls back to the labeled version on CCstream1 for everything that has not changed. I do not see a way to tell the synchronizer to use a view of my choosing where I can set the config spec, and where it will discover that unchanged files do not need to be imported again
You are correct ... you cannot play any config spec games with the
synchronizer ... each sync stream in base ClearCase has its own
completely separate branch.
In case you are wondering why, it is to handle the reverse direction
(taking changes in CC and replaying them in RTC). With an arbitrary
config spec, there would be no way of asking "what's changed in ClearCase?".
Cheers,
Geoff
On 3/17/2011 4:38 PM, jim.islandtraining.com wrote:
synchronizer ... each sync stream in base ClearCase has its own
completely separate branch.
In case you are wondering why, it is to handle the reverse direction
(taking changes in CC and replaying them in RTC). With an arbitrary
config spec, there would be no way of asking "what's changed in ClearCase?".
Cheers,
Geoff
On 3/17/2011 4:38 PM, jim.islandtraining.com wrote:
I did something very much like what you describe for code originally
authored in RTC, and cannot get the synchronization results I want.
I recreated the situation as follows.
Create RTCstream1 and populate it with several components that each
contain several files.
Create one VOB in CC for each component, and one branch type.
Create RTC-synch-stream1 and deliver the components from RTCstream1 to
RTC-synch-stream1
Select all of the roots in RTC-synch-stream1 and synchronize.
Everything is now in CC as expected.
Duplicate RTCstream1, creating RTCstream2, and add new components with
several files in each, to stream2
Create another branch type in CC
Create RTC-synch-stream2 and deliver the components from RTCstream2 to
RTC-synch-stream2
Select all of the roots in RTC-synch-stream2 and synchronize.
I get a dpulicate version on CCstream2 of everything that is on
CCstream1. If I was working in CC, CCstream2 would be based on a
label in CCstream1 and I would have a view that selects the new
components from CCstream2 and falls back to the labeled version on
CCstream1 for everything that has not changed. I do not see a way to
tell the synchronizer to use a view of my choosing where I can set
the config spec, and where it will discover that unchanged files do
not need to be imported again