Perforce Version Control

I'm just starting to investigate Perforce, the Fast Software Configuration Management System ( as a possible alternative to SourceSafe and ClearCase.

Does anyone already have experiences with this tool? I would love to hear your comments. -- BodoMaass

I used to administer ClearCase in the good olde days when it was simple and only required 5 unix sysAdmins and some CM's that straddled scripting/triggering and concepts. It was then sold to IBM who added their own 'big company' world view to it and divorced the usage of it from the management of it and now, you get invited to 'join a project' to edit a file - it's become unwieldy (in my view). Migrated from an enterprise ClearCase based CM to a medium sized company where the CM team is myself and a sysAdmin from time to time (just for IT's control). SCM is mainly down to teaching the devs to follow some guidelines as the tool itself is kinda self documenting. Most problems stem from user inexpereince. However, there are a few 'things' one should know. while branching and merging is one of perforce's strengths (and there are a few) the algorithm is not flawless and there's been a glaring hole in it (documented since 2005) that Perforce have yet to address (perforce allows you to rename files, but merging them into ancestral branches results in the original filename / directory name PLUS the newly renamed file remaining present).

The check-ins are reorded with satic un-movable values - these values can be used to reference the whole VOB/Depot and describe a single instance (cannot refer to multiple versions of any file), however, if you're using these unique identifiers to describe source that went into a build, you have to record the identifier (changelist) somewhere, as it's always inadvisable to bloat your db with needless branching, it's necessary to devise some in-house recording/reporting mechanism.

Lastly, we've been saved from a nasty DB inconsistency (our own fault) by the fact that the views are static - we were able to reconstruct some files from the versions devs had on their desktop machine - a situation inconceivable to Clearcase.

We changed to P4 from SourceSafe about six months ago and haven't looked back. It integrates well with VC++6, which we use for our native code, and not very well at all with VisualAge, which we were using for our Java. (We have other reasons for not using VAJ much these days, but the crummy integration with P4, and it's crummy at the VAJ end, natch, hasn't helped).

If you are using VisualAge, then you might consider Envy, it will certainly do better for you than P4 does with VisualAge.

The P4win GUI client is a fairly thin wrapper around the unix-style command-line interface. It has a nice windows explorer style browser for the repository, and a menu in which to put your scripts: we've perl scripts for branching off the mainline, integrating more recent changes from the mainline into a branch, and integrating a branch back into the mainline, all were pretty much painless to write and work very reliably. There are a lot of perl and python scripts available from what Perforce call the "public depot" for doing all kinds of stuff.

And you will want to do some scripting if you adopt P4. It does a pretty good job of being feature rich and policy poor, but does require you to buy in to Perforce's idea of what "branching" means, and some of the mechanics of branching require too much repetitive typing if done by hand. The conflict resolution tools are good, but take some getting used to.

In the UK at least, Perforce's tec. support is excellent. -- KeithBraithwaite

Perforce rules. Anyway, search the mail list on and you'll get a lot of compare and contrast conversations.

On the ClearCase mailing list (CCIUG; should be accessible from ) it is regularly mentioned. Comparisons there tend to favor ClearCase, but that's kind of obvious isn't it (as is the case with the Perforce mailing list mentioned above).

I was recently forced to switch from Perforce to ClearCase. Perforce was by far easier to configure and use. I want it back now!

Windows users and project managers seem to prefer ClearCase I notice. It is well integrated with windows, has a number of GUIs and a thousand icons to choose from. Perforce is a version control system with a very Unixy feel to it. When I use Perforce I feel its helping me to develop software. When I use ClearCase it feels like I'm helping it to do version control.

I won't claim to be an expert on it yet, but a couple of months ago we switched from SourceSafe to Perforce and we've never looked back. To me, the atomic changelist concept alone is worth the price compared to SourceUnSafe. The built-in (though admittedly a bit limited) issue tracking, tying of changelists to issues, client-server architecture, Web access, etc. are also all very nice features. I can't comment on ClearCase, but I'd unconditionally recommend Perforce over SourceSafe.

We switched to Perforce six months ago, after *almost* going with ClearCase.. We took a look at Perforce after stumbling on two acquaintances both said they threw out ClearCase due to problems and went to Perforce.

Q: What SCM system should I use?

A: Perforce. Now ask a difficult question. :-) (Uneducated and based on ignorace response)

2nd A: Well, if you use mediocre SCM practices and are way lazy and not very smart then go for Perforce. Otherwise stick to clearcase.

I used Clearcase for 8 years at a large corporation, at the beginning I admit it was tough to deal with configuration specs, but after a few months, I could do anything and was scripting a lot of stuff with ease. We had both UNIX and Windows versions and I favored UNIX because of the command line interface but the windows tools were, well, very pretty.

I then went to a video-game company and they had perforce and, oh my God, it was a damn pain to deal with it: slow sync times (we worked with dynamic views in clearcase so we never, ever had to sync anything), merging/diffing was a nightmare, not a good graphical view of file history (clearcase is just fantastic for this) and the changelists system made no sense.

In clearcase, we worked with branches on a per file (or better said defect/development task) basis instead of a project basis (well we also had branches (and associated labels obviously) for projects from were we still branched out. No we did not create new views for each branch we had one view for over 6 months, we only updated the config spec with whatever we needed to see and voila, you would _instantaneously_ see whatever you needed. Having a graphical view of the history tree was therefore a must (did I mention perforce is mediocre here?). We could do graphical merges/up-merges/diffs among different developer branches at once and be confident of the results immediately, etc. I tried ways to do this with perforce but there was no easy way, it was way to complex.

I guess perforce was fine for a video-game company since well, they virtually have no formal software processes in place (no kidding!). So the rush to code was #1 priority so a simple tool to keep some file history was way more than what they needed.

In clearcase, if you wanted to see and work on a specific version of a file on a potentialy different branch, well just enter the branch in your config spec, perhaps change a label or tow and there you had it... instantaneously! No sync times, no new client views no perforce wasting times.

Don't get me wrong, perforce is OK but clearcase is way better if you know what you need. I must tell you that I DO use perforce for my personal projects (in my laptop at home) since it is better than the any other free alternatives, however if there was a free clearcase license for personal use, I would use that one instead.

Short answer is actually, how much do you want to pay for the tool? Remember, you get what you payed for.

Clearcase is expensive because it is that darn good but you definitely need to learn how to use it to realize its potential. P4 is easier to learn, totaly agree here, but it is not really powerfull.

So what are you? A programmer (perforce will do good here) or a software engineer (look no further and use ClearCase). Still if your finances are low, well, perforce is good and bettter than the free tools out there, and if you work alone well they give you a free copy that you do not have to pay for.

As a certified ClearCase admin and someone who has implemented ClearCase at a large company I recommend you avoid it if at all possible. If you are in the position of even considering SourceSafe, then almost certainly that would be a better choice for you. I haven't had a chance to try Perforce yet.

I guess you passed your certification wile wearing sun-glasses.

Perforce recently (7/03) released a "Visual" client for Mac OS X and Linux. (Using Qt, I believe.) -- ChadThompson

After trying their trial version, I talked a previous employer into switching to Perforce, then had to change jobs to one which used SourceSafe. That was a hard pill to swallow...but now I have a new job where they use Perforce again! What a treat! The only reason I think people use SourceSafe is because it is widely pirated at small companies. If you are going to buy a version control system, Perforce is much better - you'll pat yourself on the back every day you use it. If you don't want to spend money on Perforce, ask yourself how much your productivity is worth to you. Yes, it makes that much of a difference.

A company I worked for used both. ClearCase was by far the heavier; it was too much maintenance for the one full-time ClearCase administrator we had (versus ~80 developers). Multisite development made him lose sleep. ClearCase had other drawbacks: it was a very expensive system (in dollars), and it performed best only for those who grokked it. At times I had to be the ClearCase evangelist for my development team - a position that shouldn't be required for what is, after all, nothing more than a VersionControl tool.

Said company changed to Perforce. Last I knew nobody missed ClearCase.

I was in charge of evaluating various VersionControl tools when my company decided to get rid of SourceSafe. I evaluated a number of tools, including CVS, PCVS, StarTeam, ClearCase, AlienBrain and some others. The price/performance of Perforce made it the only real choice for us. It was easy to set up and relatively easy to use. The atomic changes described above are really nice. The branching model takes some getting used to, but that came more from not having used branches before (SourceSafe doesn't really support it) than from the program itself. During the evaluation I found branching in other tools to be even more complex. An extra bonus with Perforce was that it actually could handle large binaries. (We use VersionControl for art as well as code). It does so by gzip:ing every version, which at least saves a lot of space. No other tool had any way of handling binaries well. AlienBrain claims to, but it really just puts all files in CD-ROM sized folders that you can archive away when they get too big. -- AndreasAxelsson

There are a lot of comparisons here between Perforce and ClearCase. As someone who a few years ago had pretty intimate knowledge of ClearCase (I was a Sales Engineer for the product) and now uses Perforce, I can bring some more detail than the usual "Hate it! Love it!" comments. I also was a pretty heavy user of (ugh) SourceSafe for a while.

Perforce is a really nice, lightweight CM system that it built on RCS as a source repository, with a database and a bunch of functionality built on top. The added functionality gives you "changelists" (atomic groups of changed files) among other things. It also comes with some nice tools for merging and so on. The branch/merge model is very simplistic, so if you need very heavy abilities to branch and merge sources, it doesn't help much: you've simply got a bunch of files to merge, and Perforce doesn't know which bits of them come from common ancestors in the version tree.

ClearCase is built on a model of a virtual filesystem. When you change your "view" to see a different set of versions, instantaneously your (virtual) files change. There is no need to copy the tree around. You can also have multiple views for multiple different projects going at once with no interference, and switch between them instantly. For example, I can be working on the multiday "refactor our foobar classes" project and the one-day "get this fix out" project and have different fixes to the same files. I can check in the fixes independently, and the diffs in each will be tracked separately, with no interference.

The branch/merge model is very sophisticated: CC tracks branches on a file-by-file basis, maintains a notion of which are the common ancestors between versions in a version tree, and does correct three-way merges. What this means is that you begin your merge with the common ancestor and apply the changes in each branch of the version tree. Particularly if I have changes that affect the same range of lines in a file, this model helps a lot.

ClearCase also has a much better model for labelling a consistent set of versions. Labels (e.g., "release_2.1.3_gold") are applied to individual files and can be easily changed to different versions in the version tree, on a file-by-file basis. E.g., I can say, "label all the files in my view as "release_2.1.3_gold"). I can then later decide to add a couple new changes to a few files, or to move back the version on a few files, and it's a trivial change: just see the version tree for the files, and move the labels. Anyone with a view that says "show me all the release_2.1.3_gold stuff" instantly will get the changes.

Perforce's notion of labels is much more difficult to deal with. Basically, a label is a set of files/versions. If you want to change the label so that it points to a different version of a few files, you need to reproduce the set of files that you want in a new clientspec (read, sync all the files to disc) and re-sync each file you want to change, and then re-set the label.

SourceSafe, other than having the problem of occasionally losing all of your history by having its database corrupted, has some major problems. First, it doesn't have atomic change sets. Second, its notion of a label is merely a timestamp (edit: not true, see If you label a set of versions to be your shipping version and then have to fix something, and in the meantime people have kept working and checking stuff in, you are SOL. I would never, never, never use SS again. RCS is better, and I'm sure that CVS is way better.

All that said, you have to judge whether the cost for the added functionality of ClearCase is worthwhile. ClearCase is very expensive in terms of initial cost, day-to-day performance, and education of the users. If you have a large organization that has lots of people regularly trying to edit overlapping sets of files to do multiple different tasks, it's probably worth the cost, especially if the subprojects last more than a couple days or span continents. If you have fairly clear ownership of files, and/or don't have people trying to change overlapping sets of files very much, and/or have very small windows when overlaps can happen, Perforce is probably sufficient.

I personally am happy to be working on a project in which Perforce is sufficient.

Small point: I disagree with above statement that SourceSafe doesn't have labels. It has named labels, the timestamps are only for recording check-in time etc.

As far as I'm concerned, Perforce is CVS with everything you want, or ClearCase without everything you don't want. Also, in 12 years in the computer industry, they have the best, friendliest, clearest, most responsive technical support I've ever used. You call them, ask for tech support, you're immediately talking to a human who is fully qualified to answer 99% of questions. It's amazing. Before you purchase any version control tool, try them on for size.

I have been using the free two user version for a while now and like it. The user manual was a little disappointing as it is slightly behind the current version of the software and many of the dialog boxes are not the same as the manual which is confusing. I have been using CVS and think the Perforce is better (although not free for more than 2 users). I am currently using the preforce in trial with GIS shapefiles, images and documents. I am very pleased with it and can definitely recommend it for commercial use. -- RichardChase

Related tools: AntHill Build Management Server, ApacheAnt, PerforceJam

I had to change from SubVersion to Perforce recently and must say that Perforce does not cut it (at all). The problem is that it is not really designed for they way modern system development is conducted these days => where refactoring and continuous improvement together with a shared responsibility of the entire codebase is common => where it should be easy to do a cascading rename which might affect as many as 40-100 files and so on. Honestly guys: Open for edit, Open for delete, Open for Add and so on just works in the opposite direction of efficiency in the development and improvement process. It is really limiting the power of refactoring and modern IDE:s.

it should be easy to do a cascading rename which might affect as many as 40-100 files

It is. P4WSAD is the Perforce plugin for Eclipse, and fully supports all of Eclipse's refactoring tasks. Highly recommended. -- BillMichell?


Friends, you will always get different opinions for SCM-tools depending on the needs of the judging user... What is important to remember is not that ClearCase is complex and/or Perforce is simplistic, it is that they have completely different approaches when it comes to version control, and - more importantly! baseline/release control.

With Perforce, you are handed a methodology that emphases controlled evolution of a software system, in terms of atomic changes (also known as change sets). With ClearCase, you are free to implement virtually any SCM control system - not always simplistic, not always easy to maintain - but doable.

If you are content with defining change sets and want to control the evolution of your software in terms of adding to each baseline a group of changes, to form a new baseline - then Perforce is both excellent, and cheap. It is just as doable in ClearCase, but not as easy. You do need some additional change management tool to create an advanced change based SCM system, but not to employ the simplest method; named changes. With Perforce, you call them for what they are; change sets. With ClearCase, you call them branches, and employ a controlled integration methodology to sort them out for releases.

You should, though, be aware that as soon as your needs are heavy when it comes to concurrent engineering, advanced support such as given by ClearCase is preferable over Perforce. For instance, when working in a geographically distributed environment, with users tampering the same bits of code... it is just not practically doable with any less provided functionality of the SCM-tool than ClearCase and the like are providing. When you are working in smaller projects where you almost always can communicate directly with your colleagues to solve integrational conflicts, less advanced - and less complex - tools are both enough and preferable. Perforce is the tool for the smaller projects, ClearCase for the larger...

Furthermore, introducing the concept of change sets for software evolution is not necessarily an easy concept. Neither is the ClearCase concept - but ClearCase underlying functionality can always be hidden from the "simple" users, though requiring "experts" or other authorities to be involved in designing the integration procedures.

And this should be my conclusion: think not of how the SCM-tool requires you to work, think of how you want the SCM-tool to work for you. Because whether we just limit the discussion to ClearCase and Perforce, or involve other competitors, a good tool is a flexible tool. A non-flexible tool may still be a good tool, but only if its SCM-method complies with the needs of your development project.

These opinions were written by a certified Rational ClearCase instructor, still being a happy home/small business environment Perforce user and advocator of the principle: the right tool for the right job.
How does Perforce and/or ClearCase compare to various open source tools?

View edit of April 14, 2010 or FindPage with title or text search