I am a build and source code technician. The tool that we use
to maintain our source code is Rational ClearCase. This is the
first time that I have used ClearCase, being used to Microsoft
SourceSafe and CVS.
So how do you go about using ClearCase? Here's how I finally
managed to get some source code into this horrendous system:
Inherite a flaky NT server from a guy who left a month ago. The
passwords for this server are scrawled in the back page of a
notebook. This is a bonus; normally passwords are sucked into
singularities that lurk beside recently-vacated desks.
Thankfully, the software on this flaky server has been installed
by a qualified Rational, um, install-bloke. well what would you
call someone who installs stuff? Unfortunately, ClearCase has
been installed on an NT server, while our software is developed
and run on Linux. Linux ClearCase clients can only connect to
NT servers through a crap Web interface with 1.35% of the power of
the NT client.
So I have to scrounge a PC to install NT and the ClearCase tools
on. I hate NT. These NT tools have flashy UIs to do
everything - except what I want to do.
So I learn I have to create a Versioned Object Base (VOB) to store
our code in. OK, I can live with that. But the VOB has to be a
Unified Change Management VOB. This means that the developers have
"activities" which they refer to when they check code in and out.
Now to use UCM VOBs, I have to create a "Project" VOB that
seems to hold metadata about my project and reference the ClearQuest
database that stores our bugs and UCM activities. Yes, to get the
full usage of our £30k+ purchase, we have use another
Rational product, which costs yet more money. Have these guys been
taking lessons from Microsoft?
So I've got my Project VOB, I've linked it to my UCM database and
I've created a VOB for our code. Now I have to contend with
"Streams" and "Views". A Stream is, um, something
that, um, does stuff. You have an Integration Stream that you do builds in, and
Development Streams that the codemonkeys use. A codemonkey will
create a View onto his/her stream, code, test (hopefully), then submit his/her
work to be merged back into the integration stream. So far, I am
keeping up with the terminology - much the same as CVS. Although I
haven't even looked at branches yet - they are not the same as streams
or views.
Now I haven't even got code into clearcase yet. So I create a
view onto my stream, that looks at a VOB. Now views can be either
Dynamic Views or Static Views. Dynamic views seem to be both stored locally and
remotely on the server. Static views are more akin to a "Get Latest
Version" in SourceSafe - I think. I go with the documentation and
choose a dynamic view, which manifests itself on my NT machine as a
shared drive.
Now we already have our code in RCS, but our PHB is a Microsoft
Advocate. He tells us that we have to use ClearCase - when
we tell him that we can't use our Linux boxen to connect to the NT
server, his answer is that we should use the NT clients (that's an NT
box for each developer) to check out our work, then copy the files across
to our Linux boxen. Obviously, this sucks. So to put our code into
ClearCase, I get the entire source tree and documentation (450Meg) and
copy it across to my NT machine.
To put the code into ClearCase, I have to run
clearexport_ffile -r <dirs> on our codebase. This
churns it's way through our source tree and produces a file that I
reference with clearimport which actually blats the code into
ClearCase.
Except it doesn't. You see, ClearCase won't do a mass import into
a UCM VOB, only a non-UCM one. You're then supposed to import the VOB
into a Project VOB, turning it into a UCM VOB in the process. Why? I
don't know. By this point in the week (this morning, I started on
Monday), I am cursing ClearCase every 5 minutes.
So I have to create a non-UCM VOB, create a view, mount the VOB
into the view then run the import tool. This I do, it takes
4 hours. Of course this would be too easy, so our BOFH's pull a vital
network cable out when I am 95% of the way through the import - which
of course then bombs out. Now I am normally a relatively placid guy,
but this made wonder if I could hide our sysadmin's body in the
hub/switch room.
So delete the files from the VOB - itself not easy or
straightforward, then set the import running again. Then I go home,
hoping that the import will run overnight.
Much of the terminology in ClearCase is such that it is now
OpaqueCase in my mind. The whole product and documentation seems
designed to make you buy very courses from Rational
University. I wonder what it will be like to try and
branch code, merge it back in or do a build? I dread to think.