Delivering the goods…UCM style

I’m going to list several random terms and you tell me what they all have in common.

  • UCM
  • Deliver
  • Rebase
  • Activity
  • Integration
  • Development
  • Stream
  • View
  • ALBD Server

No guesses? Oh, come on…it’s not that hard. Or is it? Perhaps after spending over two years of my life immersed in this world, such a random and senseless list to most defines a sort of new home for me. And what is that home? What does this list mean?

IBM Rational ClearCase. Yeah, I have to admit, I’m one of those guys: a loved, hated, mutually respected, and downright feared (and fearless) ClearCase administrator. You’re going to stop reading this post right now as a result? Good for you, I probably wouldn’t read it either.

Unless I was a ClearCase administrator who needed to know how to invoke a deliver from one integration stream to another on the command line. Oh yeah, I’ve perked your interest now!

So, lucky me, I’m a would-be hacker (not in the colloquial sense) as well as leading the unfortunate double life of a ClearCase admin. Actually, I like my job pretty well, even when other developers seem to have it out for me. I can hold my own and defend myself against the relentless barrage of comments about how much better the world would be if every license of ClearCase was shredded, the original source code run through shred and the hard drives destroyed via thermite, and CVS, Mercurial, and Git reigned supreme. Now, I have nothing against those tools and use CVS for my personal projects off the job. The big thing is that most of them dislike ClearCase not because of ClearCase, but because of the UCM model imposed upon them by ClearCase. Give them base ClearCase and most would be pleased (dare I go so far as to say, happy?). But UCM is the way we’ve chosen (at least to some degree). Take the beloved CVS and impose a strict branching strategy where each project is placed into its own branch, and then impose strict regulations on branch promotion strategy, and link it with a workflow system like ClearQuest, and what you end up with would be a hated form of CVS. Again, not because of the tool, but because of the process. But that’s a post for another day.

Back on topic. Would be hacker (or ub3r programmer, whichever you prefer) gone ClearCase admin. What do you end up with? Someone who uses Process Explorer to find out how clearmrgman is called from inside Project Explorer (clearprojexp) when delivering from one integration stream to another.

See, if you just run clearmrgman -? all you end up with are arguments for delivering a development stream up to an integration stream. Useful, yes, but only when dealing with development streams. I’m in a situation where I need to move stuff from one integration stream to another on a regular basis. And let’s face it, Project Explorer is a painfully slow tool, at least at our installation. Me calling clearmrgman myself could save me 30 minutes or more each day. It’s also just plain cool to do.

So what do I do? Well, I crank up Process Explorer and then deliver from one integration stream to another. Now I have a new process in Process Explorer and I take a look at the command line arguments used to invoke clearmrgman. What’s this? An argument was passed that is not documented! What could this strange /del_bls argument mean? Is it the key to eternal life for a ClearCase admin? I’m afraid not…you’ll need to look elsewhere for that; however, it’s definitely a serious boon.

See, if you just try to invoke the following command, you’re going to get a not-so-helpful message (quite a common occurrence in the ClearCase world).

clearmrgman /deliver /stream <Integration Stream>@<PVOB>

The message states: “A deliver operation from the integration stream must specify baselines to deliver.” OK, so the message is helpful in the sense that it tells you, in no uncertain terms, “No, dummy, you can’t do this.” What’s not helpful is that it doesn’t tell you what command you might use to do this. That’s where this handy /del_bls argument comes into play.

Let’s try the same command with the /del_bls argument added.

clearmrgman /deliver /stream <Integration Stream>@<PVOB> /del_bls

Voilá! This time around we don’t get a list box for activities (which makes no sense when delivering from an integration stream…or at least less sense). Instead, we get a list box for baselines. This is exactly what we wanted.

So why do I need to know how to do this? Well, it’s complicated, and this post is already getting lengthy…but here’s an attempt at an overview anyway. We have a new stream model we’re implementing. In this model, there is one “root” or “production” UCM Project with, of course, an integration stream under it. This stores the current version of the application. In order to work on a project against this application, two UCM Projects are created. One is the “development area” and the other is a “staging area”. When development is complete, work is delivered from the development UCM Project to the staging UCM Project (from one integration stream to another). The changes are then tested in staging and approved to move on to production (which involves another integration-to-integration delivery). The big problem with delivering between integration streams is that there is no check to ensure the source stream is based on the latest foundation baseline from the target stream. So what do I need to do? I need to write an automation console (HTA in this case) that will perform this check first and then kick off a delivery if all is well (there are other checks as well, like baseline promotion level). In order to make this console complete, I obviously needed a way to start the delivery from the command line, and that’s why I needed this information.

I’ve posted this here for any others who are fortunate (or unfortunate, depending on how you look at it) enough to be in the same position. To me, ClearCase is a great product that really seems to be lacking on the admin tools side. I really wish that IBM would take a little more time to hire some real-life admins who could come in and boost the product’s palatability to the larger development/admin community. Of course, I only see one side of the story, but that’s how life works. I just am not sure that many of the IBM developers have worked in a ClearCase UCM implementation consisting of over 600 VOBs (including PVOBs) with upwards of 100 UCM Projects inside them. Yeah, our shop isn’t released based either…just ad-hoc projects all over the place. Yes sir, it’s a ton of fun.

Well, that’s all for now. I’ve got an automated console to write!


This entry was posted in Work and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *