What are the benefits of using Perforce instead of Subversion?

  • P4 keeps track of your working copy on the server. This means that
    1. Large working copies are processed much faster. I used to have a large SVN project and a simple update took 15 minutes because it had to create a tree of the local working copy (thousands of folders). File access is slow. P4 stores the information about the working copy in the database, so any operations were always near-instantaneous.
    2. If you mess around with your files and do not tell the server, you are in trouble! You cannot just delete a file – you have to delete a file with the P4 client so the server knows. Note that if you locally delete a file, it will not be downloaded again on successive updates because the server thinks you already have it! When lots of this happened and I ended up wildly out of sync, I usually had to resort to cleaning out my local copy and downloading it again, which could be time-consuming. You must be careful about this.
  • The Explorer shell extension client (think TortoiseSVN) sucks and is completely unusable.
  • There are two GUI client applications which offer the best functionality: P4Win and P4V, of which P4V is newer and more easy to use but not as feature-rich.
  • There are Visual Studio and Eclipse plug-ins, which work relatively well, although they do not have many advanced features.
  • Generally speaking, P4 offers much less features than SVN and is sometimes downright confusing.
  • Working copy definitions were nice and flexible. I believe P4 is superior to SVN here: you can define masks for working copy folders and create all sorts of bizarre trees, so you download only what you want to exactly where you want, without having to manually futz with multiple checkouts. This came in very handy when I had gigabytes of stuff on the server and only wanted a specific subset of it. I used SVN in a similar situation with much more hassle.
  • Branching under P4 is… odd. Branchsets and different kinds of branches and confusing UI. I do not remember much details about this, unfortunately.

Other than that, it’s pretty standard.

I recommend you keep SVN unless you deal with huge codebases or hate the .svn folders littering up your filesystem. SVN+TortoiseSVN is far more confortable for most situations.

Leave a Comment