Clearcase, now that’s a version control system made for avoiding
I'm working on a project with the linux kernel that comes with RHEL3. I need to rip out and port in a different version of the qlogic fiber channel driver, because the one that ships with RHEL3 doesn't seem to work in some fairly important ways, like, um, if you put two fiber channel adapters into a box for redundancy, the driver in RHEL3 cheerfully detects them as two separate adapters (good) talking to two different fiber channel disk arrays (bad) that, by happy coincidence, are the exact same size (really bad). Not a good plan if you actually want to, um ,use the offending (single) fiber channel disk array.
So, build a big old patch that strips the morass of drivers in RHEL3 out and replaces it with the driver we want to use. Then check it into clearcase. The project lives out on a branch, so we need to label the patches so they don't end up going somewhere else.
- Check out the directory.
- mkelem the patch (which promptly vanishes off the branch)
- mklabel the patch to get it back
- check in it.
Why look, the patch is of zero size.
- check the directory back in.
- move the label on the directory so it points to the version that's got this stupid patch
Why look, the patch is STILL of zero size.
- Check the patch out.
- populate it with the contents of the patch (again)
- check the patch in
- move the label on the patch so it points to this version.
The patch has contents.
Do a build, realize that I misdid the twinky Linux CONFIG_blahblahblah_QLA2?00 labels.
- Check the patch out
- Fix the CONFIG_blahblahblah_QLA2?00 labels.
- Check the patch in
- move the label on the patch so it points to this version
Do a build, which fails. Look at the patch, see that the changes have mysteriously disappeared.
- check the patch out.
- yup, those changes aren't there.
- so populate the damned patch again with the actual patch
- fix the CONFIG_blahblahblah_QLA2?00 labels again.
- Check the patch in.
- move the label on the patch so it points to this version
- start screaming about how clearcase sucks.
I don't think that screaming about how clearcase sucks is really an optional thing anymore. Thank G-d I've got an older version of bitkeeper at home so that anything I do by myself doesn't involve days of fighting with a version control system that's maliciously pigheaded.
Comments
I was complaining about this to one of my cow orkers, and he mentioned, as if it was the most reasonable thing in the world, that I shouldn't try to check the patches in and then the version control system wouldn't be such a problem.
Oooo-kay.
That's certainly a way to deal with a version control system; Just Don't Do It until thirty seconds before the release labels are applied. It does seem to get around the whole point of version control systems, though (and it's not just Clearcase, either; A few jobs ago I was using bitkeeper and my corporate masters kept yelling at me for doing my usual cycle of checking things in at every opportunity. Don't do that, they'd say, What you want to do is to just do one big commit when you're done. Umm, with all respect, no; I like to actually use my version control software instead of simply using is as some sort of lines-of-code metric. [Now, if I'd only said that at the time instead of bottling it up, my career with those people wouldn't have been punctuated by 11 months of frustrations finally boiled overing into a fairly terse resignation letter. Oh well, live and learn; If I'd kept that job for six months longer, it would have been into the Maximum Leader Genius depression and I wouldn't have dared pull the plug on that dead-end job and wouldn't have eventually ended up working for my present, and much better except for clearcase, employer]), which is not the way I want to do thing.
Comments are closed