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.
SoftwareMaintainerDevelopment statusRepository modelConcurrency modelLicenseSupported platformsFinancial cost
AccuRev SCMMicro FocusDiscontinued, merged with Dimensions CMClient–serverMerge or lockMost Java Platforms
Azure DevOpsMicrosoftClient–server, DistributedMerge or lockWindows, cross-platform via Azure DevOps Services
GNU BazaarCanonicalUnmaintained, forked as BreezyDistributed and Client–serverMergeUnix-like, Windows, macOS
BitKeeperBitMover Inc.UnmaintainedDistributedMergeUnix-like, Windows, macOS
IBM DevOps Code ClearCaseIBMClient–serverMerge or lockLinux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS,
Code Co-opReliable SoftwareDiscontinuedDistributedMergeWindows
Concurrent Versions SystemThe CVS TeamUnmaintainedClient–serverMergeUnix-like, Windows, macOS
CVSNTMarch Hare Software and community membersUnmaintainedClient–serverMerge or lockUnix-like, Windows, macOS, IBM i
darcsThe Darcs teamDistributedMergeUnix-like, Windows, macOS
DatThe Dat teamUnmaintainedDistributedMergeUnix-like, Windows, macOS
Dimensions CMOpenTextClient–serverMerge or lockWindows, Linux, Solaris, AIX, HP UX, z/OS
DiversionDiversion Company, Inc.Client–serverMerge or lockWindows, Linux, macOS
FossilD. Richard HippDistributedMergePOSIX, Windows, macOS, Other
GitJunio HamanoDistributedMergePOSIX, Windows, macOS
GNU archAndy TaiUnmaintainedDistributedMergeUnix-like, Windows, macOS
IC ManageIC Manage Inc.Client–serverMerge or lockUnix-like, Windows, macOS
PTC IntegrityPTCDiscontinuedClient–serverMerge or lockUnix-like, Windows
MercurialDistributedMergeUnix-like, Windows, macOS
Microsoft Visual SourceSafeMicrosoftDiscontinuedShared FolderMerge or lockWindows
MonotoneNathaniel Smith, Graydon HoareUnmaintainedDistributedMergeUnix-like, Windows, macOS
Perforce P4PerforceClient–server and DistributedMerge or lockUnix-like, Windows, macOS
PVCSOpenTextDiscontinued, merged with Dimensions CMClient–serverLockWindows, Unix-like
IBM Rational Team ConcertIBMDiscontinuedClient–serverMerge or lockLinux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS, macOS
Rational SynergyIBMClient–server and DistributedMerge or lockLinux, Windows, Unix-like
Revision Control SystemThien-Thi NguyenUnmaintainedLocalMerge or lockUnix-like
Source Code Control SystemJörg SchillingUnmaintainedLocalLockUnix-like, macOS
StarTeamBorland DiscontinuedClient–serverMerge or lockWindows and Cross-platform via Java based client
SubversionApache Software FoundationmaintainedClient–serverMerge or lockUnix-like, Windows, macOS
Surround SCMPerforceUnmaintainedClient–serverMerge or lockLinux, Windows, macOS
Unity Version ControlUnity TechnologiesClient–server and DistributedMerge or lockLinux, Windows, macOS
VaultSourceGear LLCClient–serverMerge or lockUnix-like, Linux, Windows
VestaCompaqDiscontinuedDistributed NFS-protocol-emulation choice to optionally confederate clients and/or serversLock on branch; merge branch-to-branchTru64, Linux
SoftwareMaintainerDevelopment statusRepository modelConcurrency modelLicenseSupported platformsFinancial 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.
SoftwareProgramming languageStorage methodScope of changeRevision IDsNetwork protocolsSource code size
AccuRev SCMC++, JavaChangesetFileNumber pair NN/NNcustom
Azure DevOpsC++ and C#ChangesetFile and TreeNumbersSOAP over HTTP or HTTPS, Ssh
GNU BazaarPython 2, Pyrex, CSnapshotTreePseudorandomcustom, custom over ssh, custom over HTTP, HTTP, SFTP, FTP, email bundles, WebDAV 4.1 MB
BitKeeperCChangesetTreeChangeset keys, numberscustom, HTTP, rsh, ssh, email99 MB
CA Software Change ManagerC, C++, Java, HTMLChangeset and SnapshotFile and TreeNumbersHTTP, TCP/IP
IBM DevOps Code ClearCaseC, Java, PerlChangesetFile and TreeNumberscustom, custom, HTTP
Code Co-opC++ChangesetUser ID-Ordinale-mail, LAN
CVSCChangesetFileNumberspserver, ssh10.3 MB
CVSNTC++ChangesetFile and TreeNumberscustom over ssh, sspi, sserver, gserver, pserver55 MB
darcsHaskellChangeset Treen/acustom over ssh, HTTP, email1.7 MB
Dimensions CMC, C++, Java, C#Snapshot or changesetFile and TreeNumbersCustom, HTTP/HTTPS
FossilCSnapshot or changesetTreeSHA-1 or SHA-3 hashesHTTP/HTTPS, custom over ssh7.2 MB
GitC, shell scripts, PerlSnapshotTreeSHA-1 or SHA-256 hashescustom, custom over ssh, HTTP/HTTPS, rsync, email, bundles23 MB
GNU archC, shell scriptsChangesetTreeNumbersHTTP, WebDAV
IC ManageC++, CChangesetNumberscustom
MercurialPython, CChangesetTreeNumbers, SHA-1 hashescustom over ssh, HTTP, email bundles 20 MB
MKS IntegrityC, JavaChangesetFileNumberscustom, HTTP
MonotoneC++HybridTreeSHA-1 hashescustom, custom over ssh, file system4.4 MB
Perforce Helix CoreC++, CChangesetTreeNumberscustom
PVCSC++, CChangesetFileNumbers
Rational Team ConcertJavaChangesetTreeNumbersREST services over HTTP/HTTPS
Revision Control SystemCChangesetFileNumbersFile system5.3 MB
Source Code Control SystemCChangesetFileNumbersNFS1.3 MB
StarTeamC++, C, JavaSnapshotFile and TreeMD5 hashescustom, TCP/IP
SubversionCChangeset and SnapshotTreeNumberscustom, custom over ssh, HTTP and SSL 41 MB
Surround SCMC++ChangesetFile and TreeNumbersTCP/IP
SynergyJavaChangeset, SnapshotFileNumberscustom, custom over ssh, HTTP
VaultC#ChangesetFile and TreeNumbersHTTP, HTTPS
VestaC++SnapshotTreeNFS15.8 MB
Visual SourceSafeCSnapshotFileNumbersSMB, DCOM
SoftwareProgramming languageStorage methodScope of changeRevision IDsNetwork protocolsSource code size