Professional Documents
Culture Documents
Version Control System Comparison: Repository Operations
Version Control System Comparison: Repository Operations
html
Repository Operations
Atomic Commits
Support for atomic commits means that if an operation on the repository is interrupted in
the middle, the repository will not be left in an inconsistant state. Are the check-in
operations atomic? Are the check-in operations atomic, or can interrupting an operation
leave the repository in an intermediate state?
1 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
Does the system support moving a file or directory to a different location while still retaining
the history of the file?
CVS No. Renames are not supported and a manual one may break
history in two.
Aegis Yes. Renames are supported.
Arch Yes. Renames are supported.
BitKeeper Yes. Renames are supported.
Monotone Yes. Renames are supported.
OpenCM Yes. Renames are supported
Perforce Not directly (you copy and then delete but it manages to keep track
of the branch; the item below allows for this very feature)
Subversion Yes. Renames are supported.
svk Yes. Renames are supported.
Does the version control system supports copying files or directories to a different location
at the repository level, while retaining the history?
2 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
Does the system support cloning a remote repository to get a functionally equivalent copy
in the local system? That should be done without any special access to the remote server
except for normal repository access.
CVS No.
Aegis Yes.
Arch Yes.
BitKeeper Yes.
Monotone Yes.
OpenCM No.
Perforce Yes. Via the Perforce Proxy (P4P) tool.
Subversion Indirectly, by using Chia-Ling Kao’s SVN::Mirror add-on or Shlomi
Fish’ svn-push utility.
svk Yes.
CVS No.
Aegis Yes.
Arch Yes.
BitKeeper Yes.
Monotone Yes.
OpenCM No.
Perforce Unknown. Probably Not.
Subversion Yes, using either Chia-Ling Kao’s SVN::Mirror script or the svn-push
utility by Shlomi Fish.
svk Yes.
Repository Permissions
3 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
permissions systems.
Aegis Yes. Aegis relies on the UNIX permissions system to implement
permissions for files in the repository.
Arch Yes. It is possible to define permissions on access to different parts
of a remote repository based on the permission systems of the
underlying protocol.
BitKeeper FILL IN
Monotone Yes. It is possible to restrict incoming changes from certain sources
to be performed only in certain parts of the repository.
OpenCM Permissions are defined on a per-branch basis.
Perforce Yes. (more than half a dozen of permission levels that can be set in
a file by file basis)
Subversion Yes. The WebDAV-based service supports defining HTTP
permissions for various directories of the repository.
svk Same as subversion.
Changesets’ Support
Does the repository supports changesets? Changesets are a way to group a number of
modifications that are relevant to each other in one atomic package, that can be cancelled
or propagated as needed.
Does the version control system has an option to track the history of the file line-by-line?
I.e: for each line show at which revision it was most recently changed, and by whom?
4 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
Features
Ability to Work only on One Directory of the Repository
Can the version control system checkout only one directory of the repository? Or restrict
the check-ins to only one directory?
CVS Yes.
Aegis No. All changes are made repository-wide.
Arch No. All changes are made repository-wide.
BitKeeper No. All changes are made repository-wide.
Monotone No. All changes are tree-wide.
OpenCM No. All changes are made to a project as a unit
Perforce Yes. Changes to a sub-directory of the repository are supported.
Subversion Yes.
svk Yes.
Does the software has an ability to track the changes in the working copy that were not yet
commited to the repository?
5 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
Does the system has a way to assign a per-file commit message to the changeset, as well
as a per-changeset message?
Technical Status
Documentation
How well is the system documented? How easy it is to get started using it?
CVS Excellent. There are many online tutorials and resources and an
online book. The command line client also provides an online
comprehensive help system.
Aegis Medium. The documentation is given in several large scope troff
documents, that are only usable as not-so-PDFish PDF documents,
and as text documents that lack any formatting. It is very hard to get
started using it with the online resources. The content is of good
quality, but otherwise not made very accessible.
Arch Medium. There are two online tutorials and a comprehensive online
documentation. The command line client also supplies a reference
page. However, some of the documentation is out of date or
incomplete.
6 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
Ease of Deployment
How easy it is to deploy the software? What are the depenedencies and how can they be
satisfied?
CVS Good. Out of being the de-facto standard, CVS is available on most
systems and is easy to deploy.
Aegis The Aegis binary should be installed as SUID-root, and so requires
root privileges to install. It also not very portable to Win32 systems.
Other than that, Aegis supports an easy autoconf or RPM/apt-based
installation process.
Arch Excellent. An arch service is nothing but a filesystem-space hosted
by any of its supported protocols (FTP, SFTP, WebDAV, etc.). The
arch client is written in C, and is portable across UNIX systems (but
not Win32).
BitKeeper Good. All that is required is downloading a binary for the system and
installing it using the installation script. The package is
self-contained and is easy to set up.
Monotone Excellent. It is possible to copy or compile the executable to the
user’s machine, without any configuration or external dependencies.
OpenCM Very good. Install the RPM, or build from tarball and install the init
script.
Perforce Very good. Perforce is very easy to deploy.
Subversion A Subversion service requires installing Berkeley DB 4.0, as well as
either a dedicated Apache module, or its own proprietary server.
The client requires only the Subversion-specific logic and the Neon
WebDAV library. Installation of the components is quite
straightforward, but will require some work.
svk In addition to installing subversion, users are required to install the
subversion perl bindings and a few modules from CPAN.
7 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
Command Set
What is the command set? How compatible it is with the commands of CVS (the current
open-source defacto standard)?
CVS A simple command set that includes three most commonly used
commands (cvs commit, cvs update and cvs checkout) and several
others.
Aegis A complex command set that involves many operations just to get
started. Not CVS-compatible. (albeit support for such basic
operations was contemplated) Note that Aegis is a Software
Configuration Management system and not just a simple version
control system, which may justify this extra complexity.
Arch A non-CVS-compatible command set that was defined differently to
the CVS/Subversion/BitKeeper/Perforce/etc. conventions. Aliasing
of sub-commands is possible, though, so it may be possible to
partiall emulate CVS.
BitKeeper A CVS-like command set with some easy-to-get-used-to
complications due to its way of work and philosophy.
Monotone Tries to follow CVS conventions, but deviates where there is a
different design.
OpenCM A CVS-like command set that is familiar to existing CVS users.
Perforce Very extensive but not compatible with CVS.
Subversion A CVS-like command set which is easy to get used to for
CVS-users.
svk A CVS-like command set which is easy to get used to for
CVS-users.
Networking Support
How well is the networking integration in the system? How compliant it with existing
protocols and infra-structure.
CVS Good. CVS uses a proprietary protocol with various variations for its
client/server protocol. This protocol can be tunneled over an
SSH-connection to support encryption.
Aegis Poor. Aegis is filesystem-oriented and so can be networked only via
NFS (network file-system) or a similar protocol. There exists some
HTTP-functionality, but it is quite limited.
Arch Excellent. Arch can utilize a multitude of protocols for its service,
which is nothing but a dumb remote filesystem server. Currently
supported protocols include FTP, SFTP, WebDAV (remote file
access over HTTP), as well as any remote filesystem protocol (NFS,
SMB).
8 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
BitKeeper Good. Repositories can be checked out from remote over HTTP,
and BitKeeper also sports its own proprietary protocol for
communicating between one repository and the other.
Monotone Very good. System is transport agnostic and speaks HTTP and
NNTP out of the box. SMTP support will be added soon.
OpenCM Good. Uses its own proprietary client/server protocol.
Perforce Good. (single TCP/IP socket)
Subversion 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.
svk Very good. svk uses SVN::Mirror to retrieve remote repository.
There has been plans to add VCP support to SVN::Mirror so it will
be able to mirror from arbitary remote version control systems.
Portability
CVS Good. Client works on UNIX, Windows and Mac OS. Server works
on UNIXes and on Windows with a UNIX emulation layer.
Aegis Medium. The source is portable across all UNIXes, but the Windows
version work only using cygwin, and even then not entirely natively.
Arch Good. The source is portable across all UNIXes, but requires a
UNIX emulation layer on Windows. (need to verify). A service can
be hosted on any platform that sports a suitable Internet service.
BitKeeper Very good. Binaries are available for most common UNIX systems
and for Windows 98 and above.
Monotone Very good. Executable is portable across all UNIXes. It was not yet
verified to compile correctly on Windows, but the author maintains
that it should not pose a problem to make it portable to it.
OpenCM Good. Portable across all UNIX systems.
Perforce Excellent. Runs on UNIX, Mac OS, BeOS and Windows.
Subversion Excellent. Clients and Servers work on UNIX, Windows and Mac OS
X.
svk Good. Clients requires subversion and its perl bindings.
User Interfaces
Web Interface
9 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
Does the system have a WWW-based interface that can be used to browse the tree and
the various revisions of the files, perform arbitrary diffs, etc?
What is the availability of graphical user-interfaces for the system? How many GUI clients
are present for it?
CVS Very good. There are many available GUIs: WinCVS, Cervisia (for
KDE), ViewCVS (web-based), TortoiseCVS (Windows Explorer
plug-in).
Aegis There is tkaegis.
Arch There’s ViewARCH (a web-interface) and tlator and possibly others
under development.
BitKeeper Good. BitKeeper ships with several GUIs for performing common
tasks. I’m not aware of any third-part GUIs.
Monotone No GUIs are available.
OpenCM No GUIs are avialable.
Perforce Yes, P4Win and others based on the available libp4 library.
Subversion Very good. There are many available GUIs: RapidSVN
(cross-platform), ViewCVS (web), TortoiseSVN (Windows Explorer
plug-in), Jsvn (Java), etc. Most of them are still under development.
svk No GUIs are available.
License
What are the licensing terms for the software?
10 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html
11 of 11 16/01/2004 14:55