Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.

html

Version Control System Comparison


This is a comparison of version-control systems. It is split into several categories and
sub-categories under which the systems are checked.

Version Control System Comparison


Repository Operations
Atomic Commits
Files and Directories Moves or Renames
File and Directories Copies
Remote Repository Replication
Propagating Changes to Parent Repositories
Repository Permissions
Changesets’ Support
Tracking Line-wise File History
Features
Ability to Work only on One Directory of the Repository
Tracking Uncommited Changes
Per-File Commit Messages
Technical Status
Documentation
Ease of Deployment
Command Set
Networking Support
Portability
User Interfaces
Web Interface
Availability of Graphical User-Interfaces.
License

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?

CVS No. CVS commits are not atomic.


Aegis Commits are atomic.
Arch Yes. Commits are atomic.
BitKeeper Yes (but need to verify)
Monotone Yes.
OpenCM Yes. Commits are atomic.

1 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html

Perforce Yes. Commits are atomic.


Subversion Commits are atomic.
svk Commits are atomic.

Files and Directories Moves or Renames

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.

File and Directories Copies

Does the version control system supports copying files or directories to a different location
at the repository level, while retaining the history?

CVS No. Copies are not supported.


Aegis No. Copies are not supported.
Arch No. Copies of files and directory structures are not supported.
BitKeeper Yes. Copies are supported.
Monotone Yes. Copies are supported
OpenCM No. Copies are not supported.
Perforce Copies are supported (though, because of its architecture, I don’t
know how well)
Subversion Yes. And it’s a very cheap operation (O(1)) that is also utilized for
branching
svk Yes. Same as subversion.

2 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html

Remote Repository Replication

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.

Propagating Changes to Parent Repositories

Can the system propagate changes from one repository to another?

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

Is it possible to define permissions on access to different parts of a remote repository? Or


is access open for all?

CVS Limited. "pre-commit hook scripts" can be used to implement various

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.

CVS No. Changes are file-specific.


Aegis Yes. Changesets are supported.
Arch Yes. Changesets are supported.
BitKeeper Yes. Changesets are supported.
Monotone Yes. Changesets are supported.
OpenCM Yes. Changesets are supported.
Perforce Yes. Changesets are supported.
Subversion Partial support. There are implicit changeset that are generated on
each commit.
svk Same as subversion.

Tracking Line-wise File History

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?

CVS Yes. cvs annotate

4 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html

Aegis Yes. aeannotate


Arch Not in the command line client, but ViewARCH, a web-interface for
Arch, has it.
BitKeeper Yes. (bk annotate)
Monotone No.
OpenCM Unknown. Probably not.
Perforce Yes, an annotation feature is present.
Subversion Partial for the time being (svn blame)
svk Yes. (svk blame)

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.

Tracking Uncommited Changes

Does the software has an ability to track the changes in the working copy that were not yet
commited to the repository?

CVS Yes. Using cvs diff


Aegis Yes. Using aediff.
Arch Yes, using "tla changes".
BitKeeper Yes. Using bk diff.

5 of 11 16/01/2004 14:55
Version Control Systems Comparison http://better-scm.berlios.de/comparison/comparison.html

Monotone Yes. In a similar fashion to CVS.


OpenCM Yes. Using cm diff
Perforce Yes.
Subversion Yes. Using svn diff
svk Yes. Using svk diff

Per-File Commit Messages

Does the system has a way to assign a per-file commit message to the changeset, as well
as a per-changeset message?

CVS No. Commit messages are per change.


Arch No.
BitKeeper Yes. It is possible to have a per-file commit message
Monotone Yes. It is possible to attach a comment to a certain file at a certain
revision.
OpenCM Unknown.
Perforce No. Commit messages are per change.
Subversion No. There is no such feature.
svk No. There is no such feature.

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

BitKeeper Very good. There is a comprehensive help at the BitKeeper site.


Each command is documented in its own man page, and the client
contains a help tool that offers an integrated help system.
Monotone Good. There’s an overview and tutorial written in Texi, and a man
page. The client supplies documentation for every command.
OpenCM Well documented.
Perforce Excellent (html and command line help)
Subversion 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.
svk Very poor at this moment.

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

How portable is the version-control system to various operating systems, computer


architectures, and other types of systems?

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?

CVS Yes. ViewCVS.


Aegis Yes.
Arch There’s ViewARCH which is work in progress.
BitKeeper Yes. Its own built-in web-interface.
Monotone No.
OpenCM No.
Perforce Yes, P4Web.
Subversion Yes. ViewCVS and SVN::Web.
svk Yes. ViewCVS and SVN::Web.

Availability of Graphical User-Interfaces.

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

CVS GNU GPL (open source)


Aegis GNU GPL (open source)
Arch GNU GPL (open source)
BitKeeper Proprietary, binary only license. Comes in two versions: gratis and
pay per use. The gratis license is intended for development of free
software only and is problematic. The pay per use license is free of
most of its problems.
Monotone GNU GPL (open source)
OpenCM GNU GPL (open source), but moving soon to BSD or CPL (also
open source).
Perforce A proprietary, binary only, commercial license. $600 per seat per
year. Free for Open Source projects (no support in this case).
Subversion Apache/BSD-style license. (open-source)
svk Perl License. (open source)

11 of 11 16/01/2004 14:55

You might also like