There are many great choices to choose from for Source Control Management software (like Mercurial or SVN). At $work I have to use IBM’s ClearCase (CC). After using CC for the past five months, let me state simply that I would rather use CVS.

What are the problems with ClearCase?

For starters, CC does not allow collaboration with coworkers and other people. The SCM has a model where there is a project integration stream (PIS, an apropos acronym), and a individual integration stream. The selling point is that merging only happens when the developer wants it to, somewhat similar to how a DSCM works; though the workflow is backwards. One of the most important features of any SCM is pulling other people’s changes. In ClearCase this doesn’t work very well. Once a developer checks in code, the code shows up in their development stream. Then the developer has to deliver this code to the main integration stream. Other people can not pull my changes unless there is a recommended baseline. A 3-way merge happens only when someone takes the responsibility to create a new baseline. After the baseline is recommended, then the developer can rebase to fetch everyone’s changes. For the record it takes about 30 minutes to simply rebase with the tree I am working on.

This model does not encourage collaboration, nor is the work model fast; I easily waste three hours a day simply dealing with ClearCase.

Adding new subdirectories to a tree is equally painful. Instead of being able to use svn add subdir/ to add a brand new subdirectory to the tree. Clearcase has a tool called clearfsimport. The tool requires a bit of knowledge of how the project is stored on the server. Once one gets past that hurdle it takes around 2-3 hours to import 2000 files.

Joining a project in CC checks out all the files either to a snapshot (local checkout) or dynamic view (windows share, think samba share). I always do snapshot since I don’t trust Windows. In Linux only snapshot views are supported. The checked out files are all read-only. To modify a file:

cleartool checkout Filename.txt
vim Filename.txt # code code code
cleartool checkin Filename.txt

The developer must checkout the file before working. A cumbersome process that only snails would enjoy.

I could go on and on: activities must be set within a view (cleartool setactivity), or working only on Redhat 4ish (no Fedora support at the very least).

Given the chance I would embrace CVS again over using this garbage.