Integration stream vs integration view in ClearCase - clearcase

In clear case terminology, what is the difference between integration stream and integration view? Development stream and development view?
More specifically, why "joining an UCM project" involves creating both integration and development views?
If I am a developer, not an integrator, should only one view be enough?

Integration is a term used by convention to designate the first root stream of an UCM project.
Each UCM project has one root stream (and potentially many sub-streams).
The idea is that you will use your integration view as the destination view for deliver coming from sub-streams, effectively "integrated" the work done on said sub-streams on that integration view.
(Froml Stream hierarchy)
Any sub-stream is called by convention a "development" Stream, in that it represents the "configuration" (ie what you need to work) for your current "development effort".
A Stream is a configuration.
An UCM view is a ClearCase view with a config spec done automatically for you following the configuration of the Stream (instead of writing those selection rules manually).
The integration view is a view with the Integration Stream as reference.
A Development view is a view with a development Stream as reference.
The main idea behind this hierarchy of streams is to visualize your merge workflow (ie: once you have finished a work on a branch 'B', where do you need to merge said work?)
merge from a sub-stream to a parent stream: deliver
merge from a parent stream to an immediate child stream: rebase

Related

Is it possible to create a development stream with specific moules from baseline in clearcase?

Is it possible to create a development stream with specific modules from baseline in clearcase ?
Scenario:
Integration stream baseline contains around 20 modules, out of them we wanted to have only 4 modules as part of new development stream. Is it possible to create development stream with specific modules from a baseline?
Yes it is: when you create a stream, it is empty by default.
If you are using the GUI (UCM project explorer), the new dev stream might have components if there are recommended baselines on the integration stream (in which case you can remove the extra components)
But if you are using the CLI (that is 'cleartool', the command line interface), you will create an empty stream, and you will rebase it with only the four baselines of the four components you want.
Use cleartool mkstream:
cleartool mkstream -in YourIntStream#\yourPVob YourDevStream#\yourPVob
You can see example of stream (and view creation and rebase) in this answer.
But once the stream is created (and empty), you can rebase it through the GUI.
If it has components (because of recommended baselines), you also can remove the extra components through the GUI.

Foundation baseline different in snapshot view than when created

I created a snapshot view, all view access properties show the date i created it, date last modified, last accessd etc.. are all the date it should be April 10 BUT the Configurations tab shows a foundation baseline of the next release up May 10
Now I do it difrent; I create a child stream created with the older baseline and then make a snapshot but I would like to know why this snapshot I made 4/10 has a foundation baseline of 5/10
Weird how it shows a foundation baseline that is newer than the date it was created, Maybe CC just knows this is the foudantion of this next release i guess
I did a compare and the files are still the same as the date I created the snapsot is appears but if not I am in trouble...
I am new to CC and devolpement
Thanks in advance
Nothing prevents anybody to rebase the Stream you view is based on, from antoehr view.
Then, when you update your snapshot view, ClearCase will detect the change of configuration of the Stream and proposes to synchronize the config spec of your view with the Stream.
Hence the change of configuration of your view.
Whet you did in that case is correct: create a child Stream based on the right baseline, and work from there.
See "Rebase operation":
A component in Pat’s development stream is configured with baseline BL1.
A rebase operation changes the configuration of the stream to baseline BL2 from the integration stream.
The rebase operation merges files and directories from the integration stream or feature-specific development stream to the development stream.

How to clone UCM project?

I am having a project which is to be released this month. My CC admin advised to clone the project in separate project as we want to do another parallel development.
How to clone a project from another project (from particular recommended baseline)?
If there are few more changes done in source project (Which may be done another few weeks), i need to sync it withe new project. How to achieve that?
It is not exactly a "clone": you just define a new UCM project, with at least one Strea, called by default an "integration Stream".
However, in your case, you could for your new parallel development (ie your new UCM project), use only that one "Integration" stream, in which case it wouldn't play really the role of "integrating", but would be a "development" stream.
That wouldn't prevent you, in this new parallel development project, to recreate whatever hierarchy of Stream you would need.
Each UCM project has always at least one Stream. Then it is up to you to create sub-streams as needed.
You would rebase that first empty Stream with the baseline of your choice (put on one of the Stream of the first project)
For keeping both projects in sync, you would deliver from one project to the other.
You need though to set the deliver policy "allow interproject deliver to project or stream"

CCRC ClearCase Remote Client - Examining view configuration details

I'm using only CCRC - I don't have ClearCase locally installed.
I use CCRC Version: 7.1.1 Build id: 7.1.1.03.00_2010C.D100803
I'm working with a mature user of ClearCase - they have hundreds of work streams in a complex child parent relationship tree. When I create a view or stream CCRC offers me a picture of this complex tree and the location of my view (or stream if I'm creating a stream).
However, once my local view is set up there appears to be no mechanism for checking the location of any views. CCRC menus which 'show ClearCase view configuration' only show the load rules (i.e. which VOB's I'm currently selecting).
Another post to Stack Overflow tells me that '.ccase_wvreg' lists the local file paths where local copies of the files are stored. But '.ccase_wvreg' doesn't show the logical name of the views.
So how does CCRC find a map the logical view names and their configuration?
Is there another file I can examine (or other work around?) which would show me the complete view configuration.
The only workaround I have today (other than being incredibly careful and keeping png images of the stream as I set it up) is to commence the process of creating a new view or stream and retrace my steps.
Its surprising that being able to confirm the location of a view is so difficult - given what happens if one mistakenly checks in or deliver to the wrong stream!!
The CLI (Command Line Interface) for CCRC might be able to provide more information, espcially regarding the config spec of your view, in which there should be mentioned the name of the associated Stream.
catcs [-username user-name][-ser/ver server-url][-pas/sword user-password]\
[-tag view-tag]
But check first in the properties of the view. It can also include that information.

ClearCase : How Can I Revert to Earlier baseline?

How Can I Revert to Earlier baseline? We have a UCM parallel development(multi-stream) project. Each developer have a snapshot view on Project's Integration stream.
Developers want to see earlier version of the application in their snapshot views so They can debug early version of application to find bugs.
When I want to change an existing snapshot views's foundition baselines, clearcase does not allow me. So How Can I do this?
Since you employ the term Baseline, I will assume you are using UCM.
On a stream, you can not revert backward a baseline.
One possibility is to make a parallel stream, with the desired baseline as foundation: this is the quickest way.
After changes on this new stream, you can make a new rebase to change the foundation baseline, but only if that new rebase is using a more recent baseline from the parent stream (not an older baseline)
For your specific need, I would recommand a non-UCM snapshot view with a simple rule
element * thePreviousBaseline
In order for the developer to have:
his/her current UCM view for development (always set on the LATEST of a branch associated to a stream)
a second snasphot view set to whatever baseline he/she needs.
That second snapshot view is completely not-related to the UCM project and takes advantage of the "full" nature of the baseline (do check that your baseline has been put as "full", not "incremental". If it is "incremental", simply change its type and upgrade it to full)
So, beside your current snapshot UCM view, you can create anywhere you want a non-snasphot view:
cleartool mkview -snap -tag mylogin_myComponentname_csl_snap -vws myPathToViewStorage myPathToRootView
cd myPathToRootView
cleartool edcs
[add the selection rule: element * myOlderBaseline]
[add the load rule at the end: 'load /myVob_Including_MyComponent]
[save, type 'yes']
That is fine for consultation/execution, but if you need to patch (that i is to write, check out and in some files), then I would recommend one UCM stream per baseline to be patched.
That way, the stream clearly represents the patch effort for a given baseline. There should not be too many of them, unless you put into production a new version of your application every five minutes... which is not advisable ;)
So to summarize:
the non-UCM snapshot view is unique and serve for a quick consultation/debug of one older baseline at a time.
for patches (source modification), you create a parallel stream properly named, with the correct foundation baseline, and then a UCM view on it. You can not only debug but also fix some bugs in an activity, the deliver that activity to the main Int stream if that bug need to be retro-fitted on an higher stream.
(note: all bugs do not always need to be delivered: they can be obsolete when compared with the current state of the development)
The way I have solved this problem is by making another Stream, a child Stream of the Integration Stream. The easiest way to create this Stream is to open ClearCase Project Explorer (not Rational ClearCase Explorer) and navigate to the Project and then the Stream in question. Right click on the Integration Stream and select "Create Child Stream..."
Click "Advanced Options" and select a baseline for each component. Do this by selecting the component and then selecting "Change..." and selecting the specific baseline you want to see. You probably want to select "Prompt me to create a View for this Stream." Select "OK".
Any developer can do this. You don't need to be a VOB owner or Project or Stream owner.
Well, it depends. Actually, the answer lies in setting up your config spec to point to the proper files. Your config spec tells your view which versions of elements to look at. But how you do write it depends on your project's approach to baselines. Did you apply a label to mark that baseline? If so, and if you only want to read and not checkout anything new, your config spec can be as simple as
element * <LABELNAME>
If you didn't use labels, you can also set up your config spec to show you files based on dates. It gets more complicated the more rules you need to add to constrain your element choices. If you have more specifics, I can try to elaborate on what rules you might need. Otherwise, I would read the manuals that come with ClearCase. If you view the Extended Help from ClearCase Explorer, and then do "Viewing Rational ClearCase Manuals On-Line" it should give you some links to the Command References. This is where I go whenever I need to modify my config spec in some new way.
Also, note that we only use dynamic views, so I don't know if snapshot views work differently.

Resources