| 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. |
|