Title: ClearCase Stream Configuration for CR Based Approach
Tags: stream;clearcase
Question: I am having trouble creating a ClearCase stream structure that is best suited for a project that works on a ticket (CR) basis.  For example, if I have 7 CRs that need to be developed simultaneously , what would be the best approach?

Let's assume that I have three streams: DEV, TEST, and PROD.  My 7 CRs move from DEV to TEST through the deliver operation.  Of those 7 CRs, only 4 are ready for PROD.  How can I move only 4 out of the 7 CRs (now grouped into one deliver) into PROD?  What stream structure enables this?

I have read many (sometimes contradicting) suggestions and I have still not managed to find a solid approach.

Regards,

Andrew



Here is another answer: Delivery only some activities and not others is quite dangerous with UCM, mainly because you have the risk to link all the activities together.

```PROD
  TEST
    DEV
```

That will work if you deliver always from ```DEV``` to ```TEST```, ```TEST``` to ```PROD``` (you can deliver activities then).
You could be blocked, however, by a legitimate activity file-based dependency: see "About activity dependencies in the deliver operation".

If you have any issue delivering activities, then you can use ```findmerge``` to merge only the activities you want.

See more on the "all activities are linked" and ```findmerge``` in "ClearCase : Making new baseline with old baseline activities".

Comment for this answer: Delivering from `DEV` to `TEST` would work for the first set of CRs since you can deliver single activities if necessary (despite losing naming convention), but this approach would fail when delivering from `TEST` to `PROD` because the intermediate baselines created automatically through the first set of delivers would create dependency issues. Are you saying that `findmerge` would help to move individual CRs?  This means that before doing so I would have to have an activity already waiting in the target stream.  This would remove the deliver operation altogether, correct?
Comment for this answer: Thanks for the update.  We are currently struggling with ClearCase because it is very clumsy and complex when dealing with projects of this nature (ones that don't follow the rigid waterfall approach).  There is a much larger overhead since you have to plan in advance and group activities.  If you create a stream for every CR you would have to manage all the streams (huge overhead) and would lose baselining for all phases but production (which would be the integration stream for the CRs).  Do you know where I could find an analysis on these different approaches?
Comment for this answer: If only RTC were free :) I have worked with RTC source control and I find it to be much more liberating.  Unfortunately you're at a disadvantage if you're not working with Eclipse compatible technologies.  Enforcing the creation of Eclipse projects and the installation of a massive client is a bit silly, especially if you're performing CM for cobol.  Thanks again for the updates, I will take a look at the findmerge.
Comment for this answer: out of curiosity, what sort of flexibility does RTC provide for CR based development approach and the selective promotion of activities?
Comment for this answer: @Andrew yes, `findmerge` is the only way to deliver activities which are linked by that "timeline". This is not a deliver operation, but a simlpe merge of files referenced by an activity.
Comment for this answer: @Andrew As usual, [Tamir](http://stackoverflow.com/users/138479/tamir-gefen) mentions that [R&D Reporter](http://www.gomidjets.com/rnd-reporter.php) could automate that `findmerge` approach. It is a non-native (and ultimately commercial) solution that you might want to check out. I don't have any link with GoMidjets.
Comment for this answer: @Andrew I agree. I since then migrated al lmy project to RTC (https://jazz.net/products/rational-team-concert/): a much more flexible tool.
Comment for this answer: @Andrew I confirm that a Stream per CR is not a viable option. When you are dealing with activities you want to partially deliver, only the `findmerge` approach is possible, in order to not be tied by that fake "timeline" dependency between activities during a normal deliver.
Comment for this answer: @Andrew we are using RTC for C, C++ project under various Visual Studio without any problem. The `.project` are simply ignored. As for the flexibility, is is HUGE: private commit, selective deliveries of change sets, vision of changes through a list of Work Item, one Stream per CR if you want/need it (you can rename/reuse/delete a Stream whenever you want).

{'source': 'StackExchangeDataset', 'subset': 'stackoverflow.com', 'metadata': {'AnswerCount': 1, 'CommentCount': 0, 'ContentLicense': 'CC BY-SA 3.0', 'CreationDate': '2013:00:02/05/13', 'FavoriteCount': 1.0, 'PostTypeId': 1, 'Tags': '<stream><clearcase>', 'Title': 'ClearCase Stream Configuration for CR Based Approach', 'ViewCount': 66, 'id': 14711260, 'user_AboutMe': None, 'user_AccountId': 2272808.0, 'user_DisplayName': 'Andrew', 'user_Reputation': 293.0, 'user_Views': 47.0, 'user_id': 1999794.0}}