I've seen Forcing a view in clearcase to equal parent stream
However I've got a dynamic stream, and I've got to the point of rebasing etc but there are still changes from files that have not been removed on the parent stream.
Question in clarity: How do you reset a dynamic view to exactly its parent? (and to save time so far I've generated a new stream and view, but I can't keep doing that.)
A stream is not "dynamic". A view (UCM or not) can be a dynamic view.
A simpler approach would be:
put baselines on the parent stream, to mark the current codebase state for each UCM component
to rebase the integration stream with the same latest baselines as the one you just created on the parent
do so with a new dynamic view (to make sure it reflects the stream, without any checked out or private file)
That way, the child stream would see the current LATEST of the parent stream.
Related
I recently updated an old Delphi project to separate the creation of its data module and opening of that module's TDatabase, TTable and TClientDataSet components from the creation and showing of the app's form. Now, the app can toggle on and off the data components of the app. This new capacity isn't critical of course, but is "nice to have." My tool chain is RS v21 (the marketing version 10.4.1).
Yet there's a problem: after closing and reopening the data components from the UI, data aware controls show no data. Tests show that the underlying tables are open, can be navigated, and field values can be retrieved programmatically.
I've also established that resetting a data aware component's DataSource restores its display of underlying field data.
NB: data aware controls' DataSource are set at design time and, at run time after closing and reopening data tables, are not nil.
I conclude that resetting DataSource has a side effect -- probably tickling the DataLink within.
You can imagine I would like a means to obviate the need to reset a whole bunch of DataSources. The easy hopes that TDataSet methods like Refresh all fail. ;-)
A sketch of the coding inside the app's form looks like this -- to open:
dm:=Tdm.Create(nil);
dm.OpenDatabase;
dm.OpenDataTables;
And closing is the reverse:
dm.CloseDataTables;
dm.CloseDatabase;
dm.Free;
dm:=nil;
In the database Tdm: In design, the datasets are not active, and the database is not connected. Tdm.OpenDatabase envokes Open on the TDatabase; Tdm.OpenDataTables runs through the needed tables using their Open method. Tdm.CloseDatabase and Tdm.CloseDataTables are symmetrical.
Thank you for any insights.
I need to remove the code changes of an activity from the child stream, which is shared among two projects. Wanted to remove code changes from Project A but I need to secure not to lose the changes in Project B
Can someone suggest me the possible solution and the next steps to be taken care to get rid of this issue.
See "Reverse Change set of an activity in Clearcase": you can use ccperl cset.pl -undo, or do for each file in an activity a negative or subtractive merge.
In both case, the goal is to create a new activity whose change set will represent the negative image of the existing activity.
You can then do what you want/need with it, like deliver it to another stream where the first activity was already delivered.
I have this issue while rebasing the stream:
cleartool: Error: Can't switch to baseline because the stream has made changes
based on the current baseline.
giraffe_pvob is a non modifiable component on
tiger_011 project and there were no changes done on this component
by the stream.
I would like to install the preop trigger to prevent any new baseline on this stream. so how should I proceed? Will this prevent any rebasing issue like above?
Thanks !!
You cannot prevent the creation of the baseline, but you can prevent the situation which leads to said baseline on a non-modifiable component.
This is called a parasite baseline, and is one of UCM flaws.
It is caused by a dependency, as explained in "ClearCase UCM - best practices using components".
A1
B1
B2
Putting a baseline on A will create a parasite baseline on B, even if B is a non-modifiable component...
(more details in this thread)
The only preop I usually put is one (on rebase) making sure none of the foundation components (like B) of a stream are part of the dependencies of another (modifiable) component (like A depending on B)
I would like to link the child stream of an integration stream to another integration stream?
Is there any possible way to do this?
For eg.
Stream A has a child stream a and now, I would like to break child stream a from the integration stream A and I want stream a to be the child of stream B. Genetically, it might not be possible. But there might be a possibilty once you make both the integration srteam identical with same baseline. I would like to know if any of you have done in this kind of stuff in the past?
Thanks
First: no, you cannnot just "move" a stream from one parent to another.
The problem is: the foundation baselines of a child Stream only comes from the parent Stream.
That means a child from Stream B can only be rebased with baselines created on its parent.
If you want then to get a similar content, you would have to put baselines on stream_a (child of Stream A), and deliver those baselines onto the new stream.
That is quite cumbersome. I usually prefer to create a new project, with a new integration Stream which can use baselines from stream_a, and create new child streams from there.
Is it possible to open a view (snapshot or dynamic, maybe readonly) on any given baseline (recommended or older) in a stream (integration, development or child) for performing some tasks and then remove the view when done? How?
To open a view to a given baseline, you actually need a view associated to a stream with said baseline as a foundation baseline.
That means you need to rebase that stream first, which is:
not always desirable (since you would need to merge said baseline with current content, and that doesn't always make sense)
not always possible (you can only rebase a sub-stream with baselines coming from its immediate parent).
What is possible is to:
get the stream on which your baseline has been put
make a sub-stream from that stream, taking said baseline as the foundatio one
create a snapshot or dynamic view on it
do your work
put a new baseline, and deliver it to its parent stream
obsolete that sub-stream (and you can delete your view if you want)
Note: you could create a base ClearCase dynamic view (ie non-UCM) with a config spec you could then change as you want, but that wouldn't allow you to checkout and modify any file.
That would only be a convenient way to visualize any baseline of your choice.