Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
485 views
in Technique[技术] by (71.8m points)

ClearCase : Making new baseline with old baseline activities

In an integration stream Int , A1,A2,A3 are activities,B1 is baseline that includes A1,A2,A3 activities.

(Int Stream)-----A1------A2------------------A3------[B1]---------------->

We are going to deploy new version of software and our project manager said that he did not want to include A2 activity changeset in this version of software.

Can we create new baseline B2 that only includes A1 and A3 activities in ClearCase?

(Int Stream)-----A1------------------------A3------[B2]----------------> ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

No: Since B1 exists, all activities are "linked" by a common "timeline", and ClearCase will ask you to also include A2.

A possible solution would be to create a sub-stream, and to make a findmerge with only A1 and A3
(a findmerge is a non-UCM merge that can still take a list of UCM activities as an input)

The fundation baseline of the sub-stream should be the last baseline (produced on IntStream) not including A1, A2 and A3.

Then:

ct findmerge activity:A1@pvob activity:A3@pvob -fcsets -c "report for delivery" -merge -gmerge

That sub-stream plays the role of a "release stream", or "consolidation stream", that is a stream which will include all you need to build a final release.

The parent stream (IntStream) goes on in its role of integrating all development effort (coming from other sub-streams)


Note:

  • "pvob" is meant to be replace by the name of your project vob (the vob containing all UCM datas like projects, streams, baseline, activities, ...)
  • "ct" stands for "cleartool": it is an alias (Unix) or a doskey (Windows version of an alias: doskey ct=cleartool $*)

Activity dependency: A3 could in this case have some versions based on A2 versions.

findmerge command only uses activities for their changeset (list of versions) to be merged:

Each version listed in a change set becomes the from-version in a merge operation. As always, the to-version is the one in your view.

A3 including changes made in A2, the final result will include A1, A2 and A3 changes, except if A1 and A3 changes are "concurrent" (changes on similar lines): in this case, a non-trivial merge will need to be performed.


Since you do not want A2 changes, you need, as you mention in the comments, to complete that findmerge operation with a perl utility script cset.pl:

ccperl cset.pl -undo A2

It will perform a "negative merge" (or "substractive merge"), removing any changes for A2.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...