Comparison of version-control software
The following tables describe attributes of notable version control and software configuration management systems that can be used to compare and contrast the various systems.
For SCM software not suitable for source code, see Comparison of open-source configuration management software.
General information
The following table contains relatively general attributes of version-control software systems, including:- Repository model, the relationship between copies of the source code repository
- *Client–server, 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.
- *Distributed, repositories act as peers, and users typically have a local repository with version history available, in addition to their working copies.
- Concurrency model, how changes to the working copy are managed to prevent simultaneous edits from causing nonsensical data in the repository.
- *Lock, changes are disallowed until the user requests and receives an exclusive lock on the file from the master repository.
- *Merge, 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. Distributed version control systems usually use a merge concurrency model.
| Software | Maintainer | Development status | Repository model | Concurrency model | License | Supported platforms | Financial cost |
| AccuRev SCM | Micro Focus | Discontinued, merged with Dimensions CM | Client–server | Merge or lock | Most Java Platforms | ||
| Azure DevOps | Microsoft | Client–server, Distributed | Merge or lock | Windows, cross-platform via Azure DevOps Services | |||
| GNU Bazaar | Canonical | Unmaintained, forked as Breezy | Distributed and Client–server | Merge | Unix-like, Windows, macOS | ||
| BitKeeper | BitMover Inc. | Unmaintained | Distributed | Merge | Unix-like, Windows, macOS | ||
| IBM DevOps Code ClearCase | IBM | Client–server | Merge or lock | Linux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS, | |||
| Code Co-op | Reliable Software | Discontinued | Distributed | Merge | Windows | ||
| Concurrent Versions System | The CVS Team | Unmaintained | Client–server | Merge | Unix-like, Windows, macOS | ||
| CVSNT | March Hare Software and community members | Unmaintained | Client–server | Merge or lock | Unix-like, Windows, macOS, IBM i | ||
| darcs | The Darcs team | Distributed | Merge | Unix-like, Windows, macOS | |||
| Dat | The Dat team | Unmaintained | Distributed | Merge | Unix-like, Windows, macOS | ||
| Dimensions CM | OpenText | Client–server | Merge or lock | Windows, Linux, Solaris, AIX, HP UX, z/OS | |||
| Diversion | Diversion Company, Inc. | Client–server | Merge or lock | Windows, Linux, macOS | |||
| Fossil | D. Richard Hipp | Distributed | Merge | POSIX, Windows, macOS, Other | |||
| Git | Junio Hamano | Distributed | Merge | POSIX, Windows, macOS | |||
| GNU arch | Andy Tai | Unmaintained | Distributed | Merge | Unix-like, Windows, macOS | ||
| IC Manage | IC Manage Inc. | Client–server | Merge or lock | Unix-like, Windows, macOS | |||
| PTC Integrity | PTC | Discontinued | Client–server | Merge or lock | Unix-like, Windows | ||
| Mercurial | Distributed | Merge | Unix-like, Windows, macOS | ||||
| Microsoft Visual SourceSafe | Microsoft | Discontinued | Shared Folder | Merge or lock | Windows | ||
| Monotone | Nathaniel Smith, Graydon Hoare | Unmaintained | Distributed | Merge | Unix-like, Windows, macOS | ||
| Perforce P4 | Perforce | Client–server and Distributed | Merge or lock | Unix-like, Windows, macOS | |||
| PVCS | OpenText | Discontinued, merged with Dimensions CM | Client–server | Lock | Windows, Unix-like | ||
| IBM Rational Team Concert | IBM | Discontinued | Client–server | Merge or lock | Linux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS, macOS | ||
| Rational Synergy | IBM | Client–server and Distributed | Merge or lock | Linux, Windows, Unix-like | |||
| Revision Control System | Thien-Thi Nguyen | Unmaintained | Local | Merge or lock | Unix-like | ||
| Source Code Control System | Jörg Schilling | Unmaintained | Local | Lock | Unix-like, macOS | ||
| StarTeam | Borland | Discontinued | Client–server | Merge or lock | Windows and Cross-platform via Java based client | ||
| Subversion | Apache Software Foundation | maintained | Client–server | Merge or lock | Unix-like, Windows, macOS | ||
| Surround SCM | Perforce | Unmaintained | Client–server | Merge or lock | Linux, Windows, macOS | ||
| Unity Version Control | Unity Technologies | Client–server and Distributed | Merge or lock | Linux, Windows, macOS | |||
| Vault | SourceGear LLC | Client–server | Merge or lock | Unix-like, Linux, Windows | |||
| Vesta | Compaq | Discontinued | Distributed NFS-protocol-emulation choice to optionally confederate clients and/or servers | Lock on branch; merge branch-to-branch | Tru64, Linux | ||
| Software | Maintainer | Development status | Repository model | Concurrency model | License | Supported platforms | Financial cost |
Technical information
The following table shows technical details of some well-known version-control software. These are classified based on the following headers:Table explanation
- Software: The name of the application that is described.
- Programming language: The coding language in which the application is being developed
- Storage Method: Describes the form in which files are stored in the repository. A snapshot indicates that a committed file is stored in its entirety—usually compressed. A changeset, in this context, indicates that a committed file is stored in the form of a difference between either the previous version or the next.
- Scope of change: Describes whether changes are recorded for individual files or for entire directory trees.
- 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. With Integrated Difference, revisions are based on the Changesets themselves, which can describe changes to more than one file.
- Network protocols: lists the protocols used for synchronization of changes.
- Source code size: Gives the size of the source code in megabytes.
| Software | Programming language | Storage method | Scope of change | Revision IDs | Network protocols | Source code size |
| AccuRev SCM | C++, Java | Changeset | File | Number pair NN/NN | custom | |
| Azure DevOps | C++ and C# | Changeset | File and Tree | Numbers | SOAP over HTTP or HTTPS, Ssh | |
| GNU Bazaar | Python 2, Pyrex, C | Snapshot | Tree | Pseudorandom | custom, custom over ssh, custom over HTTP, HTTP, SFTP, FTP, email bundles, WebDAV | 4.1 MB |
| BitKeeper | C | Changeset | Tree | Changeset keys, numbers | custom, HTTP, rsh, ssh, email | 99 MB |
| CA Software Change Manager | C, C++, Java, HTML | Changeset and Snapshot | File and Tree | Numbers | HTTP, TCP/IP | |
| IBM DevOps Code ClearCase | C, Java, Perl | Changeset | File and Tree | Numbers | custom, custom, HTTP | |
| Code Co-op | C++ | Changeset | User ID-Ordinal | e-mail, LAN | ||
| CVS | C | Changeset | File | Numbers | pserver, ssh | 10.3 MB |
| CVSNT | C++ | Changeset | File and Tree | Numbers | custom over ssh, sspi, sserver, gserver, pserver | 55 MB |
| darcs | Haskell | Changeset | Tree | n/a | custom over ssh, HTTP, email | 1.7 MB |
| Dimensions CM | C, C++, Java, C# | Snapshot or changeset | File and Tree | Numbers | Custom, HTTP/HTTPS | |
| Fossil | C | Snapshot or changeset | Tree | SHA-1 or SHA-3 hashes | HTTP/HTTPS, custom over ssh | 7.2 MB |
| Git | C, shell scripts, Perl | Snapshot | Tree | SHA-1 or SHA-256 hashes | custom, custom over ssh, HTTP/HTTPS, rsync, email, bundles | 23 MB |
| GNU arch | C, shell scripts | Changeset | Tree | Numbers | HTTP, WebDAV | |
| IC Manage | C++, C | Changeset | Numbers | custom | ||
| Mercurial | Python, C | Changeset | Tree | Numbers, SHA-1 hashes | custom over ssh, HTTP, email bundles | 20 MB |
| MKS Integrity | C, Java | Changeset | File | Numbers | custom, HTTP | |
| Monotone | C++ | Hybrid | Tree | SHA-1 hashes | custom, custom over ssh, file system | 4.4 MB |
| Perforce Helix Core | C++, C | Changeset | Tree | Numbers | custom | |
| PVCS | C++, C | Changeset | File | Numbers | ||
| Rational Team Concert | Java | Changeset | Tree | Numbers | REST services over HTTP/HTTPS | |
| Revision Control System | C | Changeset | File | Numbers | File system | 5.3 MB |
| Source Code Control System | C | Changeset | File | Numbers | NFS | 1.3 MB |
| StarTeam | C++, C, Java | Snapshot | File and Tree | MD5 hashes | custom, TCP/IP | |
| Subversion | C | Changeset and Snapshot | Tree | Numbers | custom, custom over ssh, HTTP and SSL | 41 MB |
| Surround SCM | C++ | Changeset | File and Tree | Numbers | TCP/IP | |
| Synergy | Java | Changeset, Snapshot | File | Numbers | custom, custom over ssh, HTTP | |
| Vault | C# | Changeset | File and Tree | Numbers | HTTP, HTTPS | |
| Vesta | C++ | Snapshot | Tree | NFS | 15.8 MB | |
| Visual SourceSafe | C | Snapshot | File | Numbers | SMB, DCOM | |
| Software | Programming language | Storage method | Scope of change | Revision IDs | Network protocols | Source code size |