Skip to content
Surf Wiki
Save to docs
technology/software-engineering

From Surf Wiki (app.surf) — the open knowledge base

Comparison of version-control software

None


None

The following tables describe attributes of notable version control and software configuration management (SCM) 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 costAccuRev SCMAzure DevOpsGNU BazaarBitKeeperIBM DevOps Code ClearCaseCode Co-opConcurrent Versions SystemCVSNTdarcsDatDimensions CMDiversionFossilGitGNU archIC ManageMercurialMicrosoft Visual SourceSafeMonotonePerforce P4PVCSIBM Rational Team ConcertRational SynergyRevision Control SystemSource Code Control SystemStarTeamSubversionSurround SCMUnity Version ControlVaultVestaSoftwareMaintainerDevelopment statusRepository modelConcurrency modelLicenseSupported platformsFinancial cost
Micro FocusDiscontinued, merged with Dimensions CMClient–serverMerge or lockMost Java Platforms (Unix-like, Windows, macOS)
MicrosoftClient–server, DistributedMerge or lockWindows, cross-platform via Azure DevOps Services
CanonicalUnmaintained, forked as BreezyDistributed and Client–serverMergeUnix-like, Windows, macOS
BitMover Inc.UnmaintainedDistributedMergeUnix-like, Windows, macOS
IBMClient–serverMerge or lockIn ClearCase, a trigger may be set to allow for the lock model, and this is done at many sites. However, ClearCase development usually takes place on private branches where each developer is given their own branch, so the lock vs. merge concurrency model doesn't matter as much. Code is merged back to the main branch once the developer is ready to deliver their code to the project.Linux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS,
Reliable SoftwareDiscontinuedDistributedMergeWindows
The CVS TeamUnmaintainedClient–serverMergeUnix-like, Windows, macOS
March Hare Software and community membersUnmaintainedClient–serverMerge or lockUnix-like, Windows, macOS, IBM i
The Darcs teamDistributedMergeUnix-like, Windows, macOS
The Dat teamUnmaintainedDistributedMergeUnix-like, Windows, macOS
OpenTextClient–serverMerge or lockWindows, Linux, Solaris, AIX, HP UX, z/OS
Diversion Company, Inc.Client–serverMerge or lockWindows, Linux, macOS
D. Richard HippDistributedMergePOSIX, Windows, macOS, Other
Junio HamanoDistributedMergePOSIX, Windows, macOS
Andy TaiUnmaintainedDistributedMergeUnix-like, Windows, macOS
IC Manage Inc.Client–serverMerge or lockUnix-like, Windows, macOS
PTC IntegrityPTCDiscontinuedClient–serverMerge or lockUnix-like, Windows
Mercurial CommunityDistributedMergeUnix-like, Windows, macOS
MicrosoftDiscontinuedShared FolderMerge or lockWindows
Nathaniel Smith, Graydon HoareUnmaintainedDistributedMergeUnix-like, Windows, macOS
PerforceClient–server and DistributedMerge or lockUnix-like, Windows, macOS
OpenTextDiscontinued, merged with Dimensions CMClient–serverLockWindows, Unix-like
IBMDiscontinuedtitle=What is a distributed version control systemurl=https://about.gitlab.com/topics/version-control/benefits-distributed-version-control-system/publisher=GitLab}}Merge or lockLinux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS, macOS
IBMClient–server and DistributedMerge or lockLinux, Windows, Unix-like
Thien-Thi NguyenUnmaintainedLocalMerge or lockUnix-like
Jörg SchillingVarious forks of the original Unix sources exist, only one of which is actively maintainedUnmaintainedLocalLockWhile it is possible for multiple users to edit the same version of a file concurrently, only one of them can write back the changes.Unix-like, macOS
Borland (Micro Focus)DiscontinuedClient–serverMerge or lockWindows and Cross-platform via Java based client
Apache Software FoundationmaintainedClient–serverMerge or lockIn Subversion, a file attribute enables the lock model on per-file basis. This file attribute can be set automatically using file name wildcard expressions.Unix-like, Windows, macOS
PerforceUnmaintainedClient–serverMerge or lockLinux, Windows, macOS
Unity TechnologiesClient–server and DistributedMerge or lockLinux, Windows, macOS
SourceGear LLCClient–serverMerge or lockUnix-like, Linux, Windows
CompaqDiscontinuedDistributed NFS-protocol-emulation choice to optionally confederate clients and/or serversLock on branch; merge branch-to-branchTru64, Linux

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(s) is stored in its entirety—usually compressed. A changeset, in this context, indicates that a committed file(s) 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 (namespace). 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 sizeAccuRev SCMAzure DevOpsGNU BazaarBitKeeperCA Software Change ManagerIBM DevOps Code ClearCaseCode Co-opCVSCVSNTdarcsDimensions CMFossilGitGNU archIC ManageMercurialMKS IntegrityMonotonePerforce Helix CorePVCSRational Team ConcertRevision Control SystemSource Code Control SystemStarTeamSubversionSurround SCMSynergyVaultVestaVisual SourceSafeSoftwareProgramming languageStorage methodScope of changeRevision IDsNetwork protocolsSource code size
C++, JavaChangesetFileNumber pair NN/NNcustom
C++ and C#ChangesetFile and TreeNumbersSOAP over HTTP or HTTPS, Ssh
Python 2, Pyrex (optional), CBazaar's critical modules are written in Pyrex. They are automatically translated to pure C; except for the patience sorting module, used in merge resolution, which is written directly in the C language.SnapshotTreePseudorandomcustom, custom over ssh, custom over HTTP, HTTP, SFTP, FTP, email bundles,A Bazaar bundle is a summary diff, with sufficient extra information to preserve history. WebDAV (with plugin)4.1 MB
CChangesetTreeChangeset keys, numberscustom, HTTP, rsh, ssh, email99 MB
C, C++, Java, HTMLChangeset and SnapshotFile and TreeNumbersHTTP, TCP/IP
C, Java, PerlChangesetFile and TreeNumberscustom (CCFS), custom (MVFS filesystem driver), HTTP
C++ChangesetUser ID-Ordinale-mail (MAPI, SMTP/POP3, Gmail), LAN
CChangesetFileNumberspserver, ssh10.3 MB
C++ChangesetFile and TreeNumberscustom over ssh, sspi, sserver, gserver, pserver55 MB
HaskellChangeset (Patch)Snapshots with binary files. It's discussed to have binary changesets in future (darcs 3)Treen/acustom over ssh, HTTP, email1.7 MB
C, C++, Java, C#Snapshot or changesetFile and TreeNumbersCustom, HTTP/HTTPS
CSnapshot or changesetTreeSHA-1 or SHA-3 hashesHTTP/HTTPS, custom over ssh7.2 MB4 MB of which are sqlite3.c
C, shell scripts, PerlSnapshotTreeSHA-1 or SHA-256 hashescustom (git), custom over ssh, HTTP/HTTPS, rsync, email, bundles23 MB
C, shell scriptsChangesetTreeNumbersHTTP, WebDAV
C++, CChangesetNumberscustom
Python, CChangesetTreeNumbers,Mercurial revision numbers are local to a repository; they can differ from repository to repository depending on in which order merges are performed. SHA-1 hashescustom over ssh, HTTP, email bundles (with standard plugin)20 MB
C, JavaChangesetFileNumberscustom, HTTP
C++HybridA Monotone's revisions represent changesets and its manifests represent snapshots, each revision is linked to some manifest. But manifests are legacy constructs, they aren't kept in the database anymore and reconstructed on the fly if needed. The real work now happen in rosters which are hybrid snapshot/changeset structures.TreeSHA-1 hashescustom (netsync), custom over ssh, file system4.4 MB
C++, CChangesetTreeNumberscustom
C++, CChangesetFileNumbers
JavaChangesetTreeNumbersREST services over HTTP/HTTPS
CChangesetFileNumbersFile system5.3 MB
CChangesetFileNumbersNFS1.3 MB
C++, C, JavaSnapshotFile and TreeMD5 hashescustom, TCP/IP
CChangeset and SnapshotTreeNumberscustom (svn), custom over ssh, HTTP and SSL (using WebDAV)41 MB
C++ChangesetFile and TreeNumbersTCP/IP
JavaChangeset (text), Snapshot(binary)FileNumberscustom, custom over ssh, HTTP
C#ChangesetFile and TreeNumbersHTTP, HTTPS
C++SnapshotTreeNFS15.8 MB
CSnapshotFileNumbersSMB, DCOM

Features

The following table classifies some well-known software on the basis of its features and capabilities:

Table explanation

  • Software: The name of the application that is described.
  • Supports Git data format: able to natively work on Git's repository formats
  • Atomic commits: refers to a guarantee that all changes are made, 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 to a single, per-client setting.
  • Tags: indicates if meaningful names can be given to specific revisions, regardless of whether these names are called tags or labels.
  • International support: indicates if the software has support for multiple language environments and operating system
  • Unicode filename support: indicates if the software has support for interoperations under file systems using different character encodings.
  • Supports large repos: Can the system handle repositories of around a gigabyte or larger effectively?
SoftwareSupports Git data formatAtomic commitsFile renamesMerge file renamesSymbolic linksPre-/post-event hooksSigned revisionsMerge trackingEnd of line conversionsTagsInternational supportUnicode filename supportSupports large reposAccuRev SCMAzure DevOpsGNU BazaarBitKeeperCA Software Change ManagerIBM DevOps Code ClearCaseCode Co-opCVSCVSNTdarcsDimensions CMFossilGitGNU archIC ManageMKS IntegrityMercurialMonotonePerforce Helix CoreRational Team ConcertSource Code Control SystemStarTeamSubversionSurround SCMSynergyVaultVestaVisual SourceSafeSoftwareAtomic commitsFile renamesMerge file renamesSymbolic linksPre-/post-event hooksSigned revisionsMerge trackingEnd of line conversionsTagsInternational supportUnicode filename supportSupports large repos
url=https://web.archive.org/web/20131016074903/http://accurev.com/blog/2008/01/24/evil-twins-in-scm-not-hollywood/date=2013-10-16}}
Atomic commit can be enabled for individual checkin's ClearCase 7.1.1 release notes.
See FAQ
darcs' patches each bear a unique identifier, impossible to merge twice the same patch in a repository (without destructively modifying history using "unsafe" commands).
Although it stores (and shows by default) 8-bit filename. See FAQ
url=https://web.archive.org/web/20160304081203/http://help.serena.com/doc_center/demos/CM_Essentials_items_1.htmldate=2016-03-04}}).In the sense that its messages and graphic interfaces have English only localization, though the software is certified running fine on various language operating systems.
Controlled by the 'crnl-glob' setting (http://fossil-scm.org/index.html/help/setting)
Git does not explicitly track renames, because by design it does not track individual files. Renames and split of source files are detected after the fact, if the file content does not change dramatically.url=https://archive.today/20130415094950/http://git.kernel.org/?p=git/git.git;a=blob_plain;f=Documentation/RelNotes/1.7.9.txt;hb=HEADdate=2013-04-15}}). Older versions do not sign commits, only tags (see the -s option in git-tag(1) Manual page)
UTF-8 filenames are supported as of version 1.7.10 (MSysGit release notes).date=December 2025}}
Integrity enabled change packages provide complete workflow and 21 CFR Part 11 compliant digital signatures against the item controlling the change package.
2009 SP5 added a feature to merge child development paths.
Mercurial includes internationalization for more than 10 languages as of 2017.
Support depends upon host OS and is well supported under Unix, but not Windows OSs, due to lack of host support. See https://www.mercurial-scm.org/wiki/EncodingStrategy
It could be done via user level hooks, mandatory
Perforce will version-control symbolic links themselves, but will not recognise its own version-controlled views (local file trees), if you access them via symbolic links.
Through the process behaviour components: Operation advisors and Operation participants. http://jazz.net/library/article/292
While the source code of SCCS has been written to support internationalisation, only English message texts exist.
StarTeam supports atomic commits as of version 2006
Subversion can move a file and conserve its history, if and only if the target of the move is in the same Subversion repository as the source. Cross-repository moves require third-party tools.
Since SVN 1.8 subversion supports improved move-tracking on the client side. On the server-side it's not supported yet.url=http://svn.haxx.se/dev/archive-2015-06/0052.shtmltitle=Changeset Signingpublisher=Apache Subversion Mailing Listsaccess-date=2016-08-05}}.New to SVN 1.5 . A separate tool "svnmerge" provides merge tracking for older versions.
In Subversion, tags are a special case of the more generic "cheap copy" concept of Subversion. Per convention, a tag is a copy into a directory named "tags". Because of this, even tags are versioned. See http://svnbook.red-bean.com/nightly/en/svn.branchmerge.tags.html for more information. The reason for partial support in the table is because Subversion's emulation of tags in this manner does not meet the requirement that the tag name can be used in place of any revision identifier wherever the user may be required to enter one. This column would be meaningless if the definition were to be loosened enough to encompass Subversion's approach as every version control system supports branching and would therefore support tags as well.
in Asian releases (v6.6a to v7.1a) and since version 7.2 in general
Version change history is removed upon rename; old name not referenced.

Advanced features

The following are some more advanced features and capabilities available in notable version-control systems:

Table explanation

  • Keyword expansion: supports automatic expansion of keywords such as file revision number.
  • Interactive commits: interactive commits allow the user to cherrypick common lines of code used to anchor files (patch-hunks) that become part of a commit (leaving unselected changes as changes in the working copy), instead of having only a file-level granularity.
  • External references: embedding of foreign repositories in the source tree
  • Partial checkout/clone: ability to check out or clone only a specified subdirectory from a repository.
  • Permissions: tracks file permission bits in the revision history.
  • Timestamp preservation: overwrites the last modified filesystem attribute with the commit time upon checkout.
  • Custom automatic merge tool: automatic merging can be attempted by any tool of the user's choice (hopefully configurable on a per-file basis)
  • Supported formats: either read/write support or read-only (conversion, potentially repeated)
  • Shared build cache of derived objects: the ability to automatically substitute (wink-in) derived-objects that were built by other confederated clients that share exactly the same dependencies instead of rebuilding them locally
SoftwareKeyword expansionInteractive commitsExternal referencesPermissionsTimestamp preservationCustom automatic merge toolSupported formatsAccuRev SCMAzure DevOpsGNU BazaarBitKeeperCA Software Change ManagerIBM DevOps Code ClearCaseCVSCVSNTdarcsDimensions CMFossilGitMercurialPerforce Helix CoreRational Team ConcertSource Code Control SystemSurround SCMSubversionVestaVisual SourceSafeSoftwareKeyword expansionInteractive commitsExternal referencesPermissionsTimestamp preservationCustom automatic merge toolSupported formats
git (bi-dir)
not implemented yetbzr, subversion, git, hg, any that has a fastexporter
bitkeeper
CA Software Change Manager
Can not be disabled in dynamic views.ClearCase
Using alias of the CVSROOT/modules file.CVS records executable bit when a file is added, but does not allow changing it later on.cvs
This is a GUI feature supported by TortoiseCVS and WinCVS both of which include/use CVSNT.Same as CVS, plus also the ability to have replicated repositories including 'shadow' repositories.Use the module/directory name or an alias created using CVSROOT/modules or CVSROOT/modules2 administration file.cvsCVSNT supports this when the make/build tool used also supports it.
date=February 2009}}Darcs can automatically detect #! scripts and make them executable on checkout.darcs
User's GuideRelating a Project or Stream to Other Objects]).Migration from ClearCase, Subversion, CVS, PVCS, ChangeMan DS
Checkouts can be nested with "fossil open –nested"fossil (uses sqlite), any that has a fastexporter; migration from git and svn
The Git FAQ states that keyword expansion is not a good thingadd -i and add -p, see git-add(1) Manual PageThe Git FAQ explains why preserving modification time is considered harmfulgit, cvs, subversion, hg, any that has a fastexporter
hg, subversion, lossless two-way push to and pull from git, migration from any other format supported by the Convert extension:
url=https://www.perforce.com/perforce/doc.current/manuals/p4guide/title=P4 User's Guidepublisher=Perforceaccess-date=19 January 2018}}Perforce
sccs
Configurable on server as a Project Option and on the client as a User Option.Surround
Through third-party tools such as Tortoise SVN.SVN can not preserve file modification times. On request by the client, it can restore check-in time as last-modified time. Disabled by default.MIME type of the file must be detected as a "human-readable" MIME type, even if the merge tool can work with non-human-readable filessubversion
via SDLVesta

Basic commands

The following table provides further information about commands available in notable version-control systems.

Table explanation

  • Repository init: Create a new empty repository (i.e., version control database)
  • clone: Create an identical instance of a repository (in a safe transaction)
  • pull: Download revisions from a remote repository to a local repository
  • push: Upload revisions from a local repository to a remote repository
  • Local branches: Create a local branch that does not exist in the original remote repository
  • checkout: Create a local working copy from a (remote) repository
  • update: Update the files in a working copy with the latest version from a repository
  • lock: Lock files in a repository from being changed by other users
  • add: Mark specified files to be added to repository at next commit
  • remove: Mark specified files to be removed at next commit (note: keeps cohesive revision history of before and at the remove.)
  • move: Mark specified files to be moved to a new location at next commit
  • copy: Mark specified files to be copied at next commit
  • merge: Apply the differences between two sources to a working copy path
  • commit: Record changes in the repository
  • revert: Restore working copy file from repository
  • generate bundle file: Create a file that contains a compressed set of changes to a given repository
  • rebase: Forward-port local commits to the updated upstream head
  • Note: Commands in green rectangles that are not surrounded by [square brackets] are at an interactive command-line prompt. Text in [square brackets] is an explanation of where to find equivalent functionality.
SoftwareRepository initclonepullpushLocal branchescheckoutupdatelockaddremovemovecopymergecommitrevertgenerate bundle filerebaseAccuRev SCMAzure DevOpsGNU BazaarBitKeeperIBM DevOps Code ClearCaseCVSCVSNTdarcsFossilGitMercurialMonotonePerforce Helix CoreSource Code Control SystemSubversionSurround SCMVestaVisual SourceSafeSoftwareRepository initclonepullpushLocal branchescheckoutupdatelockaddremovemovecopymergecommitrevertgenerate bundle filerebase
[then]
using Gitclone using Gitgetcommitshelvesetcheckoutgetlockadddeleterenameusing Gitmergecommitundousing Gitget
rebase plugin
darcs send prepares a bundle of patches, defaults to sending it by mail but can send it to a file instead
Fossil's repository is single sqlite file itself
SCCS has implicit locks, applied when checking out via `edit`, removed when creating a delta.
[... then]
Through any of various means, place (to-be-immutable) file in an immutable directory prior to vcheckin.
[then]
mv(1) or link(2) the immutable file from its origin immutable directory to its destination immutable directory prior to vcheckin.
[then]
Through any of various means, copy the immutable file from its origin immutable directory to its destination immutable directory prior to vcheckin.[or]

Advanced commands

The following table shows the commands used to execute common tasks in notable version-control systems.

Table explanation

  • Command aliases: create custom aliases for specific commands or combination thereof
  • Lock/unlock: exclusively lock a file to prevent others from editing it
  • Shelve/unshelve: temporarily set aside part or all of the changes in the working directory
  • Rollback: remove a patch/revision from history
  • Cherry-picking: move only some revisions from a branch to another one (instead of merging the branches)
  • Bisect: binary search of source history for a change that introduced or fixed a regression
  • Incoming/outgoing: query the differences between the local repository and a remote one (the patches that would be fetched/sent on a pull/push)
  • Grep: search repository for lines matching a pattern
  • Record: include only some changes to a file in a commit and not others
  • Note: Commands in green rectangles that are not surrounded by [square brackets] are at an interactive command-line prompt. Text in [square brackets] is an explanation of where to find equivalent functionality.
SoftwareCommand aliasesLock/unlockShelve/unshelveRollbackCherry-pickingBisectIncoming/outgoingGrepRecordAccuRev SCMAzure DevOpsGNU BazaarBitKeeperCVSNTDarcsFossilGitMercurialMonotonePerforce Helix CoreSubversionSurround SCMSoftwareCommand aliasesLock/unlockShelve/unshelveRollbackCherry-pickingBisectIncoming/outgoingGrepRecord
enable file locking
[in '.bazaar/bazaar.conf' file](non-tracking)(bisect plugin)missing /(grep plugin)
[in '.cvsrc' file]One can also enable this as a central preference in the repository server control panel or configuration file.{{monoadmin -oRequires administrator privileges. One can 'roll back' a change using '
fossil stash supports multiple shelves with comments.
[in '.gitconfig' file]
[in '.hgrc' file](bundled extension)(bundled extension)(core) or (bundled extension)
[in monotonerc]
Third party toolSVN Bisect tool svn-bisect

User interfaces

The following table gives Web, GUI and IDE Interface specifications for notable version-control systems.

Table explanation

  • 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: functions are available through an integrated development environment. Minimum function should be to list the revision state of a file and check in/check out files.
SoftwareWeb interfacesStand-alone GUIsIntegration and/or Plug-ins for IDEsAccuRev SCMAzure DevOpsGNU BazaarBitKeeperCA Software Change ManagerIBM DevOps Code ClearCaseCode Co-opCVSCVSNTdarcsDimensions CMFossilGitGNU archIC ManageMKS IntegrityMercurialMonotonePerforce Helix CoreRational Team ConcertStarTeamSubversionSurround SCMSynergyVaultVestaVisual SourceSafeSoftwareWeb interfacesStand-alone GUIsIntegration and/or plug-ins for IDEs
YesWindows (incl. Explorer integration), Linux, Unix, macOS, BeOS availableIntelliJ IDEA, Eclipse, Visual Studio
included (SharePoint Server used for web services)Windows included; macOS, Unix availableVisual Studio. Java client for Eclipse IDE and IntelliJ IDEA (standard in Ultimate Edition)
can use a plain webserverOlive, bzr-gtk (GTK+), Bazaar Explorer (Qt), QBzr (Qt), TortoiseBzr (Windows)Eclipse (BzrEclipse, QBzrEclipse), Visual Studio (bzr-visualstudio), TextMate (TextMateBundle), Komodo IDE, Wing IDE
includedincluded (bkd)
includedEclipse-based GUIEclipse, MS Visual Studio
included, Clearcase Web Interfaceolder: MS Windows native, Motif-based GUI for Unix-like systems, TSO client for z/OS.Emacs, Eclipse ( IBM Proprietary, Eclipse-CCase ), Visual Studio (IBM proprietary), KDevelop (standard?), IntelliJ IDEA (standard in Ultimate Edition)
Not necessary since entire project is replicated locallyWindows
cvsweb, ViewVC, othersTortoiseCVS (Windows Explorer), TkCVS (Tcl/Tk), WinCVS, macOS, GTK, Qt availableEclipse (Team), KDevelop (standard), IntelliJ IDEA (standard in Community and Ultimate Editions), Emacs (standard VC), Komodo IDE, BBEdit, Wing IDE
cvsweb, ViewVC, othersWindows, macOS, OS/400, GTK, Qt availableAll those that support CVS, plus commercial plugins for SCCI, Bugzilla, Build
`darcs.cgi` included; darcsweb, Tracunder development; TortoiseDarcs (Windows Explorer), macOS (alpha),Eclipse (eclipsedarcs), Emacs (vc-darcs.el)
Windows (incl. explorer integration)Eclipse, Visual Studio, IntelliJ IDEA, XCode, Powerbuilder
Embedded webserver included (ui/server mode), ability to run multiple repositories via CGI modefuel-scm
Gitweb, wit, cgit, GitLab, GitHub, gitorious, Trac, Kallithea, Bitbucket, Stash, Springloops, Bonobo Git Server, Gitea, Gogsgitk(wish), git-gui (Tcl/Tk), tig, Gitbox (macOS), TortoiseGit, qgit, gitg (GNOME/GTK), (h)gct (Qt), git-cola (Qt), Git Extensions (Windows), GitEye, SmartGit/Hg, Tower, SourceTree (macOS/Windows), Sprout (macOS), GitX (macOS), GitUp (macOS), GitKraken, Sublime MergeAptana 3 Beta (Aptana Studio 3 with Git Integration); Atom; Eclipse (JGit/EGit); Helix TeamHub; Netbeans (NbGit); KDevelop; Visual Studio (Git Extensions); Emacs (extension for standard VC, Magit); SAP Web IDE; TextMate (Git TextMate Bundle); Vim (VCSCommand plugin and fugitive plugin); IntelliJ IDEA 8.1 (standard in Community and Ultimate Editions); Komodo IDE; Anjuta; XCode, Wing IDE; PyCharm
ArchZoomArchWay (GTK2), TlaLogEmacs (standard VC)
includedWindows, Linux, Unix, macOSEmacs, Cadence Design Framework, Synopsys Custom Designer
YesWindows, Linux, Unix, Solaris, AIX,Eclipse, Microsoft Visual Studio, Perforce and others. Also provides support for the industry standard Source Code Control (SCC) interface
Kallithea]]Hgk (Tcl/Tk), (h)gct (Qt), TortoiseHg (Windows Explorer, Nautilus), MacHg,IntelliJ IDEA (hg4idea 3rd party plugin), Eclipse (Mercurial Eclipse), NetBeans, Visual Studio 2008, Emacs, Vim (VCSCommand plugin), Komodo IDE, Eric Python IDE, Wing IDE
ViewMTN, TracMonotone,Monotone-Viz (GTK+), Guitone (Qt), Monotone Browser (GTK+, Perl)
included, P4Web, P4FTPWindows, Linux, Mac macOSEclipse, Visual Studio, Matlab; Game Engines: Unity, Unreal, Amazon Lumberyard; Graphics: Autodesk Maya, 3ds max, Adobe PS
YesEclipse-based GUIEclipse integration; MS Visual Studio integration(Limited)
includedWindows, Java, Eclipse, Visual Studio, BDS2006 integration, plus Java command-lineIntelliJ IDEA (standard in Ultimate Edition), Visual Studio, JBuilder, Eclipse
Apache 2 module included, WebSVN, ViewSVN, ViewVC, Trac, SharpForge, sventon, SpringloopsJava, KDESVN, macOS (including Finder integration), Nautilus, Qt, RabbitVCS, RapidSVN, SourceTree (macOS), TortoiseSVN (Windows Explorer)Anjuta, BBEdit, Eclipse (Subclipse, Subversive), Emacs (standard VC), IntelliJ IDEA (standard in Community and Ultimate Editions), KDevelop (standard), Komodo IDE, MonoDevelop (standard), Netbeans, RabbitVCS (for GEdit), TextMate (SVNMate plugin), Visual Studio (AnkhSVN, VisualSVN), Wing IDE. See also Comparison of Subversion clients
YesWindows, macOS, LinuxEclipse, IntelliJ IDEA, JDeveloper, NetBeans, Visual Studio, WebStorm
via Telelogic Change interfaceWindows (incl. explorer integration), Linux, UnixEclipse (Telelogic proprietary), Visual Studio (Telelogic proprietary), IntelliJ IDEA (Telelogic proprietary)
includedWindows, Unix-like, macOSVisual Studio 2003 and higher, Eclipse 3.2 and higher
VestaWeb
none included; SSWI, VSS RemotingWindows included; Linux, macOS and Solaris using SourceOffSite; any Java VM using Sourceanywhere for VSSVisual Studio, IntelliJ IDEA (standard in Ultimate Edition)

History and adoption

The following table provides historic background notes on various version-control systems:

Table explanation

  • Software: The name of the application that is described.
  • History: briefly describes the software's origins and development.
  • Notable current users: is a list of well known projects using the software as their primary revision control system, excluding the software itself, followed by a link to a full list if available.
SoftwareHistoryNotable current usersAccuRev SCMAzure DevOps ServerAzure DevOps ServicesGNU BazaarBitKeeperCA Software Change ManagerIBM DevOps Code ClearCaseCode Co-opCVSCVSNTdarcsDimensions CMFossilGitGNU archIC ManagePTC IntegrityMercurialMonotonePerforce Helix CoreRational Team ConcertRevision Control SystemSource Code Control SystemStarTeamApache SubversionSynergyVaultVestaVisual SourceSafeSoftwareHistoryNotable current users
First publicly released in 2002
First publicly released in March, 2006 as Visual Studio Team System, renamed to Team Foundation Server in 2010 and Azure DevOps Server in 2019.Microsoft
First publicly released in 2012 as Team Foundation Service, renamed to Visual Studio Online in 2013, Visual Studio Team Services in 2015 and Azure DevOps in 2018.Microsoft
Initial release March 26, 2005. Loosely related to baz. Sponsored by Canonical Ltd.
Initial release May 4, 2000. Influenced by Sun WorkShop TeamWare
Original company founded in 1977; CA SCM (then called CCC/Harvest) first released in 1995.
Developed beginning in 1990 by Atria Software, following concepts developed by Apollo Computer in DSEE during the 1980s. The most recent version is 9.0.0, released in March 2016.
The first distributed VCS, demoed in 1997, released soon after.
First publicly released July 3, 1986; based on RCSNetBSD, OpenBSD
First publicly released 1998; based on CVS. Started by CVS developers with the goal adding support for a wider range of development methods and processes.
First announced on April 9, 2003
Developed by SQL Software under the name "PCMS Dimensions" during the late 1980s (PCMS standing for Product Configuration Management). Through number of company acquisitions the product was released under names "PVCS Dimensions" (1990s, Intersolv), "Dimensions" (early 2000s, Merant), "ChangeMan Dimensions" (2004, Serena Software) and finally "Dimensions CM" (since 2007, Serena Software).
Fossil and SQLite have used Fossil since 21 July 2007.
Started by Linus Torvalds in April 2005, following the BitKeeper controversy.Linux kernel, Android, OpenJDK, Bugzilla, DragonFly BSD, FreeBSD, gcc, GNOME, GNU Emacs, GnuPG, GRUB2, KDE, MySQL, Perl 5, PostgreSQL, Python, X.Org, Cairo, Qt Development Frameworks, Samba, OpenEmbedded, Ruby, Ruby on Rails, Wine, Fluxbox, Openbox, Compiz Fusion, XCB, Xen, ELinks, XMMS2, e2fsprogs, GNU Core Utilities, DokuWiki, Drupal, LibreOffice, MediaWiki, Mono, ASP.NET MVC, ADO.NET Entity Framework, NuGet, jQuery and many of its plugins, OpenCV, Twitter, Netflix, LinkedIn, Wireshark, Django, many companies like Eclipse Foundation, Ericsson, Microsoft, Huawei, Apple, Amazon, LG
Started by Tom Lord in 2001, it later became part of the GNU project. Lord resigned as maintainer in August 2005.
Developed by IC Manage, Inc which was founded in 2003 by Shiv Sikand and Dean Drako.
Originally developed by MKS Software. Purchased by PTC in May 2011
Started April 6, 2005 by Matt Mackall, following the BitKeeper controversy. First released on April 19, 2005GNU Multi-Precision Library, GNU Octave, Pidgin, XEmacs
First released in April 2003
Developed by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald.
Version 1.0 released in June, 2008
July 1985
Started by Marc Rochkind in 1972 (binary history files, written in Snobol on IBM-370, SCCSv4 with text history files was published February 18, 1977. The same history file format is still used in SCCS 5.0.
Version 1.0 1995; Developed by StarBase software, acquired by Borland(which was acquired by Micro Focus).
Started in 2000 by CVS developers with goal of replacing CVS
Developed beginning in 1988 by Caseware, as AmplifyControl. The company was renamed Continuus in 1994, where the product became better known as Continuus/CM. Continuus was acquired by Telelogic in 1999 shortly after going public; the product was renamed Telelogic Synergy. IBM acquired Telelogic in 2008 for integration into their Rational tool suite. The product is now known as IBM Rational Synergy.
First publicly released in February, 2003
First publicly released under the LGPL in 2001
originally created by a company called One Tree Software, version 3.1. Company was bought by Microsoft which released version 4.0 of VSS around 1995

Notes

References

References

  1. "Non-GNU Savannah". The GNU Project.
  2. "CVS Pro". March Hare.
  3. "Pricing | Diversion Version Control".
  4. "How To Buy".
  5. "What is a distributed version control system". GitLab.
  6. Jean-Michel Lemieux. "Countdown to the next Rational Team Concert: Part II – Source control enhancements". Jazz Community.
  7. (9 November 2020). "Rational Synergy". IBM.
  8. "Apache Software Foundation".
  9. "Licesing and pricing". PlasticSCM.
  10. (9 November 2020). "IBM – Rational ClearCase – United States".
  11. "Changesets". March Hare Software Ltd..
  12. "Fossil Technical Overview".
  13. "Fossil Hash Policy".
  14. (20 August 2025). "Git 2.51 Released with Performance Optimizations and SHA-256 as Default hash Function – Cyber Web Spider Blog – News".
  15. "Git Server Protocol".
  16. (2 November 2021). "Git - fast, scalable, distributed revision control system".
  17. "Archived copy".
  18. (2004-04-26). "SCM News – Kronos Turns to AccuRev for Software Configuration Management". AccuRev.
  19. (2008-09-23). "Enhanced Performance and Scalability for Cross-Platform Geographically Distributed Teams". AccuRev.
  20. "EOL conversions are supported since bzr 1.14". Doc.bazaar-vcs.org.
  21. [http://www.ibm.com/support/docview.wss?uid=swg21229688 Support Policy for National Languages and ClearCase] from IBM Support
  22. "Fossil: Hooks".
  23. "Fossil: Fossil Versus Git".
  24. "GitExtension - Mercurial".
  25. https://foss.heptapod.net/mercurial/mercurial-devel/-/tree/branch/default/hgext/git
  26. With the [https://www.mercurial-scm.org/wiki/LargefilesExtension Largefiles Extension] in core since [https://www.mercurial-scm.org/wiki/WhatsNew/Archive#Mercurial_2.0_.282011-11-01.29 Hg Rev.:2.0 (2011)], the [https://code.facebook.com/posts/218678814984400/scaling-mercurial-at-facebook/ remotefilelog extension (2014)], the [https://www.mercurial-scm.org/wiki/FsMonitorExtension fsmonitor extension] in core since [https://www.mercurial-scm.org/wiki/Release3.8 Hg Rev.:3.8 (2016)] and the experimental sparse extension in core [https://www.mercurial-scm.org/wiki/Release4.3 since Hg Rev.:4.3 (2017)].
  27. [http://www.perforce.com/perforce/doc.current/manuals/p4guide/04_files.html#1060858] {{Webarchive. link. (2014-02-10 from the [[Perforce]] User's Guide)
  28. [http://www.perforce.com/perforce/doc.current/manuals/p4guide/05_resolve.html#1068311] {{Webarchive. link. (2014-02-09 from the [[Perforce]] User's Guide)
  29. "Perforce Public Knowledge Base – Home". Perforce.com.
  30. (2010-10-21). "Perforce Knowledge Base: Internationalization and Localization". Kb.perforce.com.
  31. (2010-10-21). "Perforce Knowledge Base: Internationalization and Localization". Kb.perforce.com.
  32. [http://www.seapine.com/pr.php?id=147&title=Seapine_Software_Releases_Surround_SCM_2009] – Seapine Software Releases Surround SCM 2009
  33. "GitCentric | AccuRevGit for the Enterprise". Accurev.com.
  34. (2005-09-05). "Bazaar keywords plugin". Wiki.bazaar.canonical.com.
  35. (7 March 2008). "Bazaar interactive plugin". Launchpad.net.
  36. (9 November 2009). "Bazaar Externals plugin". Launchpad.net.
  37. (4 March 2010). "Ignore merge operation for given extension".
  38. (8 May 2006). "bzr-svn". Launchpad.net.
  39. (15 July 2006). "bzr-git". Launchpad.net.
  40. (13 June 2006). "bzr-hg". Launchpad.net.
  41. [http://www.ibm.com/developerworks/rational/library/4311.html#N10496 IBM Rational ClearCase: The ten best triggers] from IBM DeveloperWorks
  42. [http://www.fossil-scm.org/index.html/doc/trunk/www/fileformat.wiki#manifest The manifest], Fossil file formats
  43. (2014-01-22). "Fossil import and export". Fossil-scm.org.
  44. (2013-02-15). "git-submodule(1) Manual Page". Kernel.org.
  45. (2014-08-24). "git-read-tree(1) Manual Page". kernel.org.
  46. "Mercurial KeywordExtension page". Mercurial-scm.org.
  47. (2013-08-27). "Mercurial RecordExtension page". Mercurial-scm.org.
  48. "Subrepository – Mercurial". Mercurial-scm.org.
  49. With the sparse extension included in core since [https://www.mercurial-scm.org/wiki/Release4.3 Hg Rev.:4.3].
  50. (2012-04-24). "Mercurial Timestamp Extension". Mercurial-scm.org.
  51. (2017-03-14). "Merge Tool Configuration". Mercurial-scm.org.
  52. (2013-08-28). "hgsubversion page". Mercurial-scm.org.
  53. "Hg-Git Mercurial Plugin". Hg-git.github.com.
  54. "P4 User's Guide". Perforce.
  55. "Keyword Substitution". Svnbook.red-bean.com.
  56. "Externals Definitions". Svnbook.red-bean.com.
  57. darcs's default ''pull'' command is interactive, allowing the user to choose which patches to apply (merge) in realtime
  58. (2012-10-25). "Mercurial Rebase Extension". Mercurial-scm.org.
  59. "bug 6463 - enh: search repository".
  60. (2013-11-07). "Mercurial Shelve extension page". Mercurial-scm.org.
  61. "Mercurial Strip extension page". Mercurial-scm.org.
  62. "graft -core command (since Hg Rev.2.0)". Selenic.com.
  63. (2012-05-12). "Mercurial Transplant extension page". Mercurial-scm.org.
  64. "The Perforce Broker". Perforce.com.
  65. (1990-01-01). "Perforce Knowledge Base: "Cherry Picking" Integrations". Kb.perforce.com.
  66. (2012-09-10). "Supported Integrations – PTC Integrity". Mks.com.
  67. "La Chose : web agency and software maker – agence web et développement de logiciels".
  68. (1997-05-18). "Distributed Source Control System". Portal.acm.org.
  69. [https://www.mercurial-scm.org/wiki/Presentations?action=AttachFile&do=get&target=ols-mercurial.pdf Towards A Better SCM: Revlogs and Mercurial], presented by Matt Mackall to the Ottawa Linux Symposium, July 2006
  70. "GCC: Anonymous read-only Git access".
  71. (11 March 2021). "A Hacker's Guide to GnuPG".
  72. "Getting and Working With the Perl Source". dev.perl.org.
  73. "Setup and building". Python.org.
  74. "Git". MediaWiki.
  75. (May 24, 2017). "The largest Git repo on the planet".
  76. "PTC Sets New Standard for Managing Hardware and Software Development Lifecycles with MKS Integrity Acquisition – PTC Integrity". Mks.com.
  77. "Mercurial". Mercurial-scm.org.
  78. Rochkind, Marc J.. (December 1975). "The Source Code Control System".
  79. http://minnie.tuhs.org/cgi-bin/utree.pl?file=PWB1/usr/news/pibs PWB UNIX product announcement
  80. (2014-08-19}} file format (as manpage sccsfile(4) in {{cite web). "Archived copy".
  81. [https://web.archive.org/web/19980507011804/http://demo.starbase.com/WebDraw%2BOld%2BWeb%2BSite/StarTeam/StarTeam.htm Starteam®]
Info: Wikipedia Source

This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page.

Want to explore this topic further?

Ask Mako anything about Comparison of version-control software — get instant answers, deeper analysis, and related topics.

Research with Mako

Free with your Surf account

Content sourced from Wikipedia, available under CC BY-SA 4.0.

This content may have been generated or modified by AI. CloudSurf Software LLC is not responsible for the accuracy, completeness, or reliability of AI-generated content. Always verify important information from primary sources.

Report