| SCM feature: | Perforce | Vesta |
Add to comparison:
+CVS +AccuRev +Aegis +AllChange +Arch +Bazaar +BitKeeper +ClearCase +CM+ +CMSynergy +Co-Op +Darcs +Git +LibreSource Synchronizer +Mercurial +Monotone +OpenCM +PureCM +SourceAnywhere +Subversion +Superversion +Surround SCM +svk +Team Foundation Server +Visual SourceSafe |
|---|---|---|---|
|
Atomic Commits |
Yes. 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. The unit of checkout/checkin is a directory tree. Files and directories can be added, deleted, and renamed between versions. | |
|
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. | Unknown. FILL IN. | |
|
File and Directories Copies |
Copies are supported (though, because of its architecture, I don't know how well) | Yes. A new package/branch can be based on any existing version without affecting the past history. (This is also an O(1) operation.) | |
|
Remote Repository Replication |
Yes. Via the Perforce Proxy (P4P) tool. | Yes. Replication is a fundamental part of the design. | |
|
Propagating Changes to Parent Repositories |
Unknown. Probably Not. | Yes. | |
|
Repository Permissions |
Yes. (more than half a dozen of permission levels that can be set in a file by file basis) | Yes. Access permissions for each package (the unit of checkout/checkin) can be different. Access permissions for a branch can be different from the basis package. | |
|
Changesets' Support |
Yes. Changesets are supported. | Not exactly. Vesta uses a related concept of configurations instead, which some has similar properties. | |
|
Tracking Line-wise File History |
Yes, an annotation feature is present. | No, but it would be easy to implement a tool that did this, as the Vesta repository provides direct filesystem access to all versions. | |
|
Ability to Work only on One Directory of the Repository |
Yes. Changes to a sub-directory of the repository are supported. | Yes and no. The unit of checkout/checkin (called a package) is a directory tree. Most projects use more than one. Once created, a package must be checked out/in as a unit. | |
|
Tracking Uncommited Changes |
Yes. | Yes. Intermediate immutable snapshots can be taken during an active checkout (with vadvance). These intermediate versions can be treated just like checked in versions: they can be replicated to other repositories and used as the basis for branches. | |
|
Per-File Commit Messages |
No. Commit messages are per change. | Not exactly. The unit of checkin is a directory, and commit messages are assigned at that level, not to individual files. Since configurations are also versioned, they also have commit messages. | |
|
Documentation |
Very Good (html and command line help) | Quite thoroughly (HTML, man pages, published papers, a book-length research report). | |
|
Ease of Deployment |
Very good. Perforce is very easy to deploy. | Medium to Good. There is a detailed installation guide for setting it up using a binary kit. RPMs and Debian packages have been recently released. There are no dependencies on other software. There is a bootstrap package available to build Vesta from using "make". | |
|
Command Set |
Very extensive but not compatible with CVS. | The command set is unrelated to CVS. Most of the time, users use about 5 commands. Few ever need to know more than about 20 commands. | |
|
Networking Support |
Good. (single TCP/IP socket) | Networking is inherent to the system. The repository exports both an NFS interface and an RPC interface. The checkout and checkin tools automatically contact a remote repository when required to perform an operation. | |
|
Portability |
Excellent. Runs on UNIX, Mac OS, BeOS and Windows. | Good. It should be portable to any UNIX system. Currently it runs on Digital/Compaq/HP Tru64 UNIX and Linux on several different CPU architectures. Ports to Solaris and FreeBSD are planned but haven't begun yet. | |
|
Web Interface |
Yes, P4Web. | Yes: Vestaweb. | |
|
Availability of Graphical User-Interfaces. |
Yes, P4Win and others based on the available libp4 library. | No GUIs are available, but the repository has a C++ API, and it is not hard to write one. (At least three different project-specific ones have been written by users at Compaq and Intel.) | |
|
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. |
|