Comparison of Revision Control Software

The original version of this chart is from wikipedia and is now off on it's own branch.

This is a work in progress, but rather than repeat the battles on wikipedia, I thought we could start where that currently stands. I've removed vendors that appear dead, or have no actual users referenced. I've also removed sections like "History and Adoption" that were all marketing cruft. Edits and cleanup help would be greatly appreciated.


The following tables compare general and technical information for notable revision control and software configuration management (SCM) software. This article is not all-inclusive and may become out of date quickly.

General information

Software   Maintainer   Development status   Repository model   Concurrency model   License   Platforms supported   Cost  
AccuRev AccuRev, Inc. actively developed Client-server Merge or lock Proprietary Any Java Platform (Unix-like, Windows, Mac OS X) $1495 (enterprise) for each license, free 5-user 30 day trial licenses available
CA Software Change Manager CA, Inc. actively developed Client-server Merge or Lock Proprietary Linux, Windows, OS/400 Named and Concurrent Seat Licenses available with Volume Discounts Available








ClearCase IBM Rational actively developed Client-server Merge or lock[2] Proprietary Unix-like, Windows, i5/OS, z/OS $4380 per concurrent user plus tax (includes 12 months support) [18]
















CVS The CVS Team maintained but new features not added Client-server Merge GPL Unix-like, Windows, Mac OS X Free
















Git Junio Hamano actively developed Distributed Merge GPL POSIX, Windows, Mac OS X Free
MKS John Heathrow and David Artisan actively developed Client-server Lock Proprietary Unix-like, Windows Aggregated usage formula, from $999 to $100,000 USD
Perforce Perforce Software Inc. actively developed Client-server Merge or Lock Proprietary Unix-like, Windows, Mac OS X Free for up to 2 users, and for OSS development; else $900 per seat, with volume discounts
StarTeam Borland actively developed Client-server Merge or lock Proprietary Windows and Cross-platform via Java based client $7500 per concurrent, $2500 per fixed user. Contact Borland
Subversion (SVN) CollabNet, Inc.[56] actively developed Client-server[4] Merge or lock[5] Apache/BSD style Unix-like, Windows, Mac OS X Free (Commercial support/services available)
Surround SCM Seapine Software[58] actively developed Client-server Merge or lock Proprietary Unix-like, Windows, Mac OS X Commercial
Team Foundation Server Microsoft actively developed Client-server Lock or merge Proprietary Server: Windows Server 2003; Clients: Windows and Web included Licensed through MSDN subscription or through direct buy[62]
Telelogic Synergy Telelogic (IBM) actively developed Client-server and Distributed Merge or Lock Proprietary Linux, Windows, Unix-like Contact Telelogic [64]
Vault SourceGear LLC[66] actively developed Client-server Lock or Merge Proprietary Unix-like, Linux, Windows $249 per user
Visual SourceSafe Microsoft serious bug fixes only Client-server Lock or merge Proprietary Windows ~$500 per license or single license included with each MSDN subscription.
Software Maintainer Development status Repository model Concurrency model License Platforms supported Cost

Table Explanation

  • Software: The name of the application that is described.
  • Maintainer: The company or group that is currently taking responsibility for the software's maintenance or development
  • Development Status: The current status of the software project
  • Repository model: describes the relationship between various copies of the source code repository. In a client-server model, users access a master repository via a client; typically, their local machines hold only a working copy of a project tree. Changes in one working copy must be committed to the master repository before they are propagated to other users. In a distributed model, repositories act as peers, and users typically have a local repository with version history available, in addition to their working copies.
  • Concurrency model: describes how changes to the working copy are managed to prevent simultaneous edits from causing nonsensical data in the repository. In a lock model, changes are disallowed until the user requests and receives an exclusive lock on the file from the master repository. In a merge model, users may freely edit files, but are informed of possible conflicts upon checking their changes into the repository, whereupon the version control system may merge changes on both sides, or let the user decide when conflicts arise. Note that distributed version control almost always implies a merge concurrency model.
  • Licence: The licence model under which the software is licensed. These can be both free and paid licences
  • Platforms Supported: The operating systems that the software application currently supports.
  • Cost: The price of the software application

Technical information

Software  ↓ Programming language  ↓ History model  ↓ Revision IDs  ↓ Repository size  ↓ Network protocols  ↓
AccuRev C++, Java Changeset Namespace O(revisions) custom
Aldon C++, Java Snapshot Namespace O(revisions) custom
CA Software Change Manager C, C++, Java, HTML Changeset and Snapshot Namespace O(patch) HTTP, custom (TCP)
Bazaar Python, Pyrex, C[6] Snapshot Pseudorandom O(patch) HTTP, SFTP, FTP, custom, custom over ssh, email bundles[7], WebDAV (with plugin)
ClearCase C Changeset Namespace O(patch) HTTP, custom (CCFS), custom (MVFS filesystem driver)
CVS C Changeset Namespace O(patch) pserver[68], ssh
Perforce c++, c Changeset Namespace O(patch) custom
StarTeam C, Java Snapshot MD5 hashes O(revision) custom, TCP/IP
Subversion C Changeset and Snapshot Namespace O(patch) custom over ssh, HTTP and SSL (using WebDAV), custom (svnserve)
Surround SCM C++ Changeset Namespace O(patch) custom
Team Foundation Server C++ and C# Changeset Namespace O(patch) SOAP over HTTP or HTTPS
Vault C# Changeset  ? O(patch) HTTP, HTTPS
Visual SourceSafe C Snapshot Namespace? O(changes)? None, but can access repository files through a "share"
Software Programming language History model Revision IDs Repository size Network protocols

Table Explanation

  • Software: The name of the application that is described.
  • Programming Language: The coding language in which the application is being developed
  • History model: describes the form in which changes are stored in the repository. For example, when a change is committed, a system could store a copy of the tree before and after the change (snapshot), or it might instead store a copy of the tree before the change and a changeset representing the changes.
  • Revision IDs: are used internally to identify specific versions of files in the repository. Systems may use pseudorandom identifiers, content hashes of revisions, or filenames with sequential version numbers (namespace).
  • Repository size: describes the growth-rate of the repository as changes are committed. O(patch) means that it grows as the size of the patches between revisions, while O(revisions) means that it grows as the size of each revision checked in.
  • Network protocols: lists the protocols used for synchronization of changes.

Features

Software   Atomic commits   File renames   Merge file renames   Symbolic links   Pre/post-event hooks   Signed revisions   Merge tracking   End of line conversions   Tags   International Support  
AccuRev Yes Yes Yes Yes Yes Yes Yes Yes N/A Yes
Aldon Yes Yes ? Yes Yes Yes Yes ? ? ?
CA Software Change Manager Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Bazaar Yes Yes Yes Yes Yes Partial[11] Yes No Yes Yes
ClearCase No Yes Yes Yes Yes Yes Yes Yes Yes Yes[12]
CVS No No No No limited support No No Yes Yes ?
Git Yes Yes (implicit) Yes [69] Yes Yes [70] Yes [71] Yes Yes Yes Partial[16]
Mercurial Yes Yes Yes Yes[19] Yes Yes Yes Yes Yes Yes [20]
Perforce Yes Yes[22] No Yes Yes Yes Yes [74] Yes Yes Yes [75]
StarTeam Yes[23] Yes ? Yes No No Yes Yes Yes Yes
Subversion Yes Yes[24] No Yes Yes No Yes[25]. Yes Partial[26] Yes
Surround SCM Yes Yes Yes No Yes No Yes Yes Yes Yes
Team Foundation Server Yes Yes Yes  ? Yes  ? Yes ? Yes Yes
Vault Yes Yes Yes No Yes No No Yes Yes ?
Visual SourceSafe No Yes ? Yes (using shares)[29] Yes No No ? Yes Yes
Software Atomic commits File renames Merge file renames Symbolic links Pre/post-event hooks Signed revisions Merge tracking End of line conversions Tags International Support

Table Explanation

  • Software: The name of the application that is described.
  • Atomic commits: refers to a guarantee that all changes made are merged, or that no change at all will be made.
  • File renames: describes whether a system allows files to be renamed while retaining their version history.
  • Merge file renames: describes whether a system can merge changes made to a file on one branch into the same file that has been renamed on another branch (or vice versa). If the same file has been renamed on both branches then there is a rename conflict that the user must resolve.
  • Symbolic links: describes whether a system allows revision control of symbolic links as with regular files. Versioning symbolic links is considered by some people a feature and some people a security breach (e.g., a symbolic link to /etc/passwd). Symbolic links are only supported on select platforms, depending on the software.
  • Pre/post event hooks: indicates the capability to trigger commands before or after an action, such as a commit, takes place.
  • Signed revisions: refers to integrated digital signing of revisions, in a format such as OpenPGP.
  • Merge tracking: describes whether a system remembers what changes have been merged between which branches and only merges the changes that are missing when merging one branch into another.
  • End of line conversions: describes whether a system can adapt the end of line characters for text files such that they match the end of line style for the operating system under which it is used. The granularity of control varies. Subversion, for example, can be configured to handle EOLs differently according to the file type, whereas Perforce converts all text files according a single, per-client setting.
  • Tags: indicates if meaningful names can be given to specific revisions.
  • International Support: Indicates if the software has support for multiple language environments and operating system


Basic Commands

Software  ↓ branch init with/without repository  ↓ repository init  ↓ clone  ↓ pull  ↓ push  ↓ fetch  ↓ git-style branch  ↓ git-style checkout  ↓ checkout  ↓ update  ↓ add  ↓ remove  ↓ move  ↓ copy  ↓ merge  ↓ commit  ↓ revert  ↓ generate bundle file  ↓ rebase  ↓
Bazaar init init-repository / init-repo branch / clone / get pull push No create-local-branch, list-local-branches, remove-local-branch (bzr-local-branches plugin) switch-local-branch (bzr-local-branches plugin) checkout / co update / up add remove / rm move / mv / rename No merge commit / ci / checkin revert send rebase (rebase plugin)
Git init  ? clone pull push fetch branch checkout No No add rm mv No merge commit revert bundle rebase
SVN (mkdir+svn add) svnadmin create svn copy / cp (in same repository only) No No No No No svn checkout / co svn update / up svn add svn delete / del / remove / rm svn move / mv / rename / ren svn copy / cp svnmerge merge svn commit / ci svn revert No  ???
Mercurial init  ? clone pull push fetch (fetch extension) bookmarks extension update / up / checkout / co No No add remove / rm rename / mv copy merge commit revert bundle rebase (rebase extension)
Software branch init with/without repository repository init clone pull push fetch git-style branch git-style checkout checkout update add remove move copy merge commit revert generate bundle file rebase


  • Software: The name of the application that is described.
  • Web Interface: Describes whether the software application contains a web interface. A web interface could allow the software to post diagnostics data to a website, or could even allow remote control of the software application.
  • GUIs: A GUI is a graphical user interface. If a software product features a GUI its functionality can be accessed through application windows as opposed to accessing functionality based upon typing commands at the command prompt such as a DOS interface.
  • Plug-ins: functionality is available through an Integrated Development Environment. Minimum functionality should be to list the revision state of a file and checkin/checkout files.


Comments

John Wall
John Wall
Producer at M Show Productions, LLC
Boston
Article rating:
Your rating:

Categories

Based on community consensus.

Activity for this knol

This week:

14pageviews

Totals:

369pageviews