1

I am encountering a problem with Clearcase. I do apologise in advance if I am unclear, or redundant since I am quite new to this VCS, coming from a Git background mainly, I might not know how to search correctly regarding my problems.

We have a new version (non-relevant to CC, business-wise) of the application every few months, and we create a new VOB and stream for each version each time. We have a generic stream in which we deliver the last baselines from a finished version, add a new baseline, then export the contents of the generic stream to a new VOB and Stream.

My problem is, being hasty I actually delivered into the the generic stream, not the last baseline, but a previous one. And on top of that, I added a brand new baseline to the generic stream.

I need to be able to deliver into my generic stream, the very last baseline from our previous business version of the application.

(I am mostly manipulating Clearcase project explorer, since I don't really know the cleartool command. I tried to use a few CLI solutions but could not manage to do so, but might be linked to how our Clearcase server is)

In order to do that, I tried to :

  • Delete the delivery activity. But there is an error when I try to do that : "Error : Cannot remove an activity with versions in its changeset". I tried to bypass this, helping myself with google, but could not manage to do so. I am afraid this is normal Clearcase behaviour, and cannot pursue this way.
  • Redeliver our last business version correctly, but it did not work because of my newly hastily created baseline in the generic stream.

I would take up on any clue, indication lead, since I cannot manage to find how to correctly advance upon this matter.

Thank you in advance.

Simon Grondin
  • 79
  • 1
  • 9
  • I have written before about Git vs. ClearCase: https://stackoverflow.com/search?q=user%3Ame+git+clearcase. In particular: https://stackoverflow.com/a/645771/6309 and https://stackoverflow.com/a/1074785/6309 – VonC Jan 15 '20 at 22:19
  • That was really instructive ! Thank you ! – Simon Grondin Jan 16 '20 at 14:39

2 Answers2

1

It is simpler to:

  • deliver to the generic stream the right content (on top of the wrong one) and set a new baseline
  • rename the previous baseline into a "DO-NOT-USE" name
  • cleartool lock -obsolete the baseline, to make it invisible (rather than trying to delete it)

That way, you can resume your successive delivers/imports of each release, and forget about the wrong one.

VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
1

If the baseline you created in that stream is the most recent baseline, and has not yet been used by another stream (either pulled in a rebase or delivered to another stream), you should be able to just remove it.

In any event, since your plan is to move forward by delivering a more recent baseline created in the same parent stream to this "generic" stream, you can just deliver the right baseline to this stream, make a new baseline, and optionally lock the previous baseline.

A couple of UCM gotchas you may want to be aware of:

  • If you deliver a baseline to another stream, the source baseline is permanently irremovable.
  • ALL deliver operations deliver baselines. If you don't create a baseline, the deliver operation creates a "deliverbl" baseline to deliver.
  • Removing streams is either non-trivial or impossible.
  • Removing projects where development work has been done is usually impossible.

For future reference, to remove an activity that is NOT in a baseline:

  • Describe the activity on the command line to get the list of versions. You may want to redirect the output into a file so you can copy and paste the version info into the next step more easily. To describe the activity, you need to use "cleartool describe activity:{id}@{project VOB tag}"
  • Remove all the versions in the change set using "cleartool rmver -xhlink {version ID}"
  • Remove the activity. Since the delivery is apparently completed, the activity should not be set.
Brian Cowan
  • 1,048
  • 6
  • 7