Comparison between Perforce and Subversion

Back to main page

   
SCM feature: Perforce Subversion Add to comparison: +CVS
+AccuRev
+Aegis
+AllChange
+Arch
+Bazaar
+BitKeeper
+ClearCase
+CM+
+CMSynergy
+Co-Op
+Darcs
+Git
+LibreSource Synchronizer
+Mercurial
+Monotone
+OpenCM
+PureCM
+SourceAnywhere
+Superversion
+Surround SCM
+svk
+Team Foundation Server
+Vesta
+Visual SourceSafe
Atomic Commits
Yes. Commits are atomic. Commits are atomic.
Files and Directories Moves or Renames
Not directly (you copy and then delete but it manages to keep track of the branch) Yes. Renames are supported.
Intelligent Merging after Moves or Renames
Partial. While perforce doesn't explicitly support renames (one hsa to do a copy+delete), it does keep track of the full revision and integration history across copying, so changing a file in the copied directory and trying to merge it does the right thing. No. "svn help me" says "Note: this subcommand is equivalent to a 'copy' and 'delete'." There's a bug report about it.
File and Directories Copies
Copies are supported (though, because of its architecture, I don't know how well) Yes. And it's a very cheap operation (O(1)) that is also utilized for branching.
Remote Repository Replication
Yes. Via the Perforce Proxy (P4P) tool. Indirectly, by using Chia-liang Kao's SVN::Mirror add-on or Shlomi Fish' SVN-Pusher utility.
Propagating Changes to Parent Repositories
Unknown. Probably Not. Yes, using either Chia-Ling Kao's SVN::Mirror script or the svn-push utility by Shlomi Fish.
Repository Permissions
Yes. (more than half a dozen of permission levels that can be set in a file by file basis) Yes. The WebDAV-based service supports defining HTTP permissions for various directories of the repository.
Changesets' Support
Yes. Changesets are supported. Partial support. There are implicit changeset that are generated on each commit.
Tracking Line-wise File History
Yes, an annotation feature is present. Yes. (svn blame)
Ability to Work only on One Directory of the Repository
Yes. Changes to a sub-directory of the repository are supported. Yes.
Tracking Uncommited Changes
Yes. Yes. Using svn diff
Per-File Commit Messages
No. Commit messages are per change. No. There is no such feature.
Documentation
Very Good (html and command line help) Very good. There is a free online book and some online tutorials and resources. The book is written in DocBook/XML and so is convertible to many different formats. The command-line client also provides a good online help system that can be used as a reference.
Ease of Deployment
Very good. Perforce is very easy to deploy. A Subversion service requires installing an Apache 2 module (if one wishes to use HTTP as the underlying protocol) or its own proprietary server. The client requires only the Subversion-specific logic and the Neon WebDAV library (for HTTP). Installation of the components is quite straightforward, but will require some work, assuming Subversion does not come prepackaged for one's system.
Command Set
Very extensive but not compatible with CVS. A CVS-like command set which is easy to get used to for CVS-users.
Networking Support
Good. (single TCP/IP socket) Very good. The Subversion service can use either WebDAV+DeltaV (which is HTTP or HTTPS based) as its underylying protocol, or its own proprietary protocol that can be channeled over an SSH connection.
Portability
Excellent. Runs on UNIX, Mac OS, BeOS and Windows. Excellent. Clients and Servers work on UNIX, Windows and Mac OS X.
Web Interface
Yes, P4Web. Yes. ViewVC, SVN::Web, WebSVN, ViewSVN, mod_svn_view, Chora, Trac, SVN::RaWeb::Light, SVN Browser, Insurrection and perl_svn. Aside from that, the Subversion Apache service provides a rudimentary web-interface.
Availability of Graphical User-Interfaces.
Yes, P4Win and others based on the available libp4 library. Very good. There are many available GUIs: RapidSVN (cross-platform), TortoiseSVN (Windows Explorer plug-in), Jsvn (Java), etc. Most of them are still under development.
 


Information taken from Better SCM Initiative website by Shlomi Fish (shlomif@iglu.org.il).

Reorganized for usability by Alexey Mahotkin (Version Control Blog) in 2008.

 

Creative Commons License
This work is licensed under a Creative Commons License.