[p4] ClearCase vs. Perforce

Mike Castle mcastle at yy.com
Tue Jun 12 17:27:31 PDT 2001


On Fri, Jun 08, 2001 at 03:24:41PM -0700, Kevin Bailey wrote:
> In the system I used, Clearcase didn't have the concept of a
> change-list. The build was constantly broken because people
> would only check-in 4 out of 5 files necessary for a fix. They
> would subsequently do the same thing when merging the fix to
> another branch.

I have people doing this all the time with Perforce as well.

Has little to do with change lists, really.

> In the last "large" Clearcase project I worked on, the
> administrator (a Clearcase expert, supposedly) took 4 months to
> set the system up and even after that was constantly running
> from desk to desk helping people. Productivity was cut at least
> in half.

This too can happen with any tool.  It's happening with me right now with
perforce, actually (has less to do with perforce really, than it does with
the choice of other tools, such as things like visual cafe, that have no
easy way of doing command line builds, and does stupid things like resets
paths your setup doesn't exactly match whomever checked it in).  I'm in a
situation where I am forced (against my will, I assure you) to make
everyone have the same layout on their machines so that all of the tools
will work.  This transition is rough, and during the transition,
productivity is falling.  But I'm certain that at the end of it, all will
be well.

> > However, I've only been using Perforce for a few months now, but I guess I'm
> > not sure what the real value of Perforce over CVS is.
> 
> Speed, atomic transactions, change lists, better branching, keeping
> track of already merged changes, ...  There's no comparison.

The speed is gained, I imagine, mostly by the fact that Perforce keeps
track of what the user has on the machine.  Whereas CVS keeps this
information in it's CVS/* files.  (Btw, bitkeeper, as I understand it,
keeps the information localized like that as well, but I can't remember if
it's on the client or server side.)  For things like working over a dialup
connection though, they feel pretty similar.  Btw, cvs, when needing to
update a local file, will send only a 'patch' if that is smaller the
resulting file.  Does Perforce do similar?  (i've not bothered to trace
network traffic yet to see :-).

Far as branching goes, I have to say that I find that perforce method
extremely confusing.  But then, I have been a CVS user for years.  When I
read the Perforce white paper on how people "copy directories" and they
used that as their model for branching, I was dumb founded.  I can kind of
work with it now.  But it confuses the hell out of my users.  Similarly,
it's MUCH easier under cvs to start making a change, then realize that the
change actually should go onto a different branch rather than the one
you're currently working on.  Just do a "cvs up -r branchtag" and the it's
done.

Tracking already merged changes is trivial to script with cvs.  And if you
have a branch off of a branch, and need to get a change back to the
mainline, it's much easier with cvs than it is with perforce's baseless
merge (in my rather limited experience with perforce, that is).

Far as the other things go, I've not really found them to be any
better/more powerful than stuff in cvs.  But then, I don't feel that
someone else doing an update while I'm doing a commit and getting half of
my changes to be a big deal.  The way I develop, with commit early/commit
often, what they get will usually still build and work.  And most of the
time, if someone does an 'cvs up'/'p4 sync' and see changes come across,
they immediately do it again to make sure nothing important scrolled off
the screen (like couldn't overwrite a file you changed the permissions on).

mrc



More information about the perforce-user mailing list