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 cost
AccuRev SCMMicro FocusDiscontinued, merged with Dimensions CMClient–serverMerge or lockProprietaryMost Java Platforms (Unix-like, Windows, macOS)$350 per seat, quoted on an individual basis.
Azure DevOpsMicrosoftActiveClient–server, DistributedMerge or lockProprietaryWindows, cross-platform via Azure DevOps ServicesFree for up to 5 users in the Azure DevOps Services or for open source projects; else at cost, licensed through MSDN subscription or direct buy.
GNU BazaarCanonicalUnmaintained, forked as BreezyDistributed and Client–serverMergeGPL-2.0-or-laterUnix-like, Windows, macOSFree
BitKeeperBitMover Inc.UnmaintainedDistributedMergeApache-2.0Unix-like, Windows, macOSFree
IBM DevOps Code ClearCaseIBMActiveClient–serverMerge or lockProprietaryLinux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS,$4600 per floating license (held automatically for 30 minutes minimum per user, can be surrendered manually)
Code Co-opReliable SoftwareDiscontinuedDistributedMergeMITWindows$150 per seat
Concurrent Versions SystemThe CVS TeamUnmaintainedClient–serverMergeGPL-1.0-or-laterUnix-like, Windows, macOSFree
CVSNTMarch Hare Software and community membersUnmaintainedClient–serverMerge or lockGPL or proprietaryUnix-like, Windows, macOS, IBM i£425 distribution fee for older version or £85 commercial license for latest version of CVS Suite or Change Management Server
darcsThe Darcs teamActiveDistributedMergeGPL-2.0-or-laterUnix-like, Windows, macOSFree
DatThe Dat teamUnmaintainedDistributedMergeBSD-3-ClauseUnix-like, Windows, macOSFree
Dimensions CMOpenTextActiveClient–serverMerge or lockProprietaryWindows, Linux, Solaris, AIX, HP UX, z/OSPaid
FossilD. Richard HippActiveDistributedMergeBSD-2-ClausePOSIX, Windows, macOS, OtherFree
GitJunio HamanoActiveDistributedMergeGPL-2.0-onlyPOSIX, Windows, macOS, LinuxFree
GNU archAndy TaiUnmaintainedDistributedMergeGPLUnix-like, Windows, macOSFree
IC ManageIC Manage Inc.ActiveClient–serverMerge or lockProprietaryUnix-like, Windows, macOSPaid
PTC IntegrityPTCDiscontinuedClient–serverMerge or lockProprietaryUnix-like, WindowsPaid
MercurialActiveDistributedMergeGPL-2.0-or-laterUnix-like, Windows, macOSFree
Microsoft Visual SourceSafeMicrosoftDiscontinuedShared FolderMerge or lockProprietaryWindows$500 per license approximately, or single license included with each MSDN subscription.
MonotoneNathaniel Smith, Graydon HoareUnmaintainedDistributedMergeGPL-2.0-or-laterUnix-like, Windows, macOSFree
Perforce P4PerforceActiveClient–server and DistributedMerge or lockProprietaryUnix-like, Windows, macOSAvailable as perpetual license and subscriptions; prices vary based on configurations and options
PVCSOpenTextDiscontinued, merged with Dimensions CMClient–serverLockProprietaryWindows, Unix-likePaid
IBM Rational Team ConcertIBMDiscontinuedClient–serverMerge or lockProprietaryLinux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS, macOSFree for up to 10 users, else paid
Rational SynergyIBMActiveClient–server and DistributedMerge or lockProprietaryLinux, Windows, Unix-likePaid
Revision Control SystemThien-Thi NguyenUnmaintainedLocalMerge or lockGPL-3.0-or-laterUnix-likeFree
Source Code Control SystemJörg SchillingUnmaintainedLocalLockCDDL – proprietaryUnix-like, macOSFree CDDL-licensed versions or paid in some UNIX distributions.
StarTeamBorland (Micro Focus)DiscontinuedClient–serverMerge or lockProprietaryWindows and Cross-platform via Java based clientPaid
SubversionApache Software FoundationmaintainedClient–serverMerge or lockApache-2.0Unix-like, Windows, macOSFree
Surround SCMPerforceUnmaintainedClient–serverMerge or lockProprietaryLinux, Windows, macOS$595 per user; $29/month subscription
Unity Version ControlUnity TechnologiesActiveClient–server and DistributedMerge or lockProprietaryLinux, Windows, macOSFree for up to 3 users, else starting at $7 per user per month for server-hosted, or $23 per user per month for on-premises edition. No perpetual licenses.
VaultSourceGear LLCActiveClient–serverMerge or lockProprietaryUnix-like, Linux, Windows$300 per user
VestaCompaqDiscontinuedDistributed NFS-protocol-emulation choice to optionally confederate clients and/or serversLock on branch; merge branch-to-branchLGPLTru64, LinuxFree
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(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 size
AccuRev SCMC++, JavaChangesetFileNumber pair NN/NNcustomUnknown
Azure DevOpsC++ and C#ChangesetFile and TreeNumbersSOAP over HTTP or HTTPS, SshUnknown
GNU BazaarPython 2, Pyrex (optional), CSnapshotTreePseudorandomcustom, custom over ssh, custom over HTTP, HTTP, SFTP, FTP, email bundles, WebDAV (with plugin)4.1 MB
BitKeeperCChangesetTreeChangeset keys, numberscustom, HTTP, rsh, ssh, email99 MB
CA Software Change ManagerC, C++, Java, HTMLChangeset and SnapshotFile and Tree[citation needed]NumbersHTTP, TCP/IPUnknown
IBM DevOps Code ClearCaseC, Java, PerlChangesetFile and TreeNumberscustom (CCFS), custom (MVFS filesystem driver), HTTPUnknown
Code Co-opC++ChangesetUnknownUser ID-Ordinale-mail (MAPI, SMTP/POP3, Gmail), LANUnknown
CVSCChangesetFileNumberspserver, ssh10.3 MB
CVSNTC++ChangesetFile and TreeNumberscustom over ssh, sspi, sserver, gserver, pserver55 MB
darcsHaskellChangeset (Patch)Treen/acustom over ssh, HTTP, email1.7 MB
Dimensions CMC, C++, Java, C#Snapshot or changesetFile and TreeNumbersCustom, HTTP/HTTPSUnknown
FossilCSnapshot or changesetTreeSHA-1 or SHA-3 hashesHTTP/HTTPS, custom over ssh7.2 MB
GitC, shell scripts, PerlSnapshotTreeSHA-1 or SHA-256 hashescustom (git), custom over ssh, HTTP/HTTPS, rsync, email, bundles23 MB
GNU archC, shell scriptsChangesetTreeNumbersHTTP, WebDAVUnknown
IC ManageC++, CChangesetUnknownNumberscustomUnknown
MercurialPython, CChangesetTreeNumbers, SHA-1 hashescustom over ssh, HTTP, email bundles (with standard plugin)20 MB
MKS IntegrityC, JavaChangesetFileNumberscustom, HTTPUnknown
MonotoneC++HybridTreeSHA-1 hashescustom (netsync), custom over ssh, file system4.4 MB
Perforce Helix CoreC++, CChangesetTreeNumberscustomUnknown
PVCSC++, CChangesetFileNumbersUnknownUnknown
Rational Team ConcertJavaChangesetTreeNumbersREST services over HTTP/HTTPSUnknown
Revision Control SystemCChangesetFileNumbersFile system5.3 MB
Source Code Control SystemCChangesetFileNumbersNFS1.3 MB
StarTeamC++, C, JavaSnapshotFile and TreeMD5 hashescustom, TCP/IPUnknown
SubversionCChangeset and SnapshotTreeNumberscustom (svn), custom over ssh, HTTP and SSL (using WebDAV)41 MB
Surround SCMC++ChangesetFile and TreeNumbersTCP/IPUnknown
SynergyJavaChangeset (text), Snapshot(binary)FileNumberscustom, custom over ssh, HTTPUnknown
VaultC#ChangesetFile and TreeNumbersHTTP, HTTPSUnknown
VestaC++SnapshotTreeUnknownNFS15.8 MB
Visual SourceSafeCSnapshotFileNumbersSMB, DCOMUnknown
SoftwareProgramming languageStorage methodScope of changeRevision IDsNetwork protocolsSource code size

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 repos
AccuRev SCMYesYesPartialYesYesYesYesYes—N/aYesYesYes
Azure DevOpsYesYesYesYesYesYesNoYesYesYesYesYesYes
GNU BazaarYesYesYesYesYesYesYesYesYesYesYesUnknown
BitKeeperYesYesYesYesYesUnknownYesYesYesUnknownUnknownYes
CA Software Change ManagerYesYesYesYesYesYesYesYesYesYesYesUnknown
IBM DevOps Code ClearCasePartialYesYesYesYesYesYesYesYesYesUnknownYes
Code Co-opYesYesYesNoPartialNoNoNoYesUnknownUnknownUnknown
CVSNoNoNoNoNoPartialNoNoYesYesUnknownNoYes
CVSNTNoYesYesYesYesYesNoYesYesYesYesYesYes
darcsYesYesYesNoYesYes—N/aNoYesNoYesUnknown
Dimensions CMYesYesYesNoYesUnknownYesYesYesNoYesYes
FossilYesYesYesYesYesYesYesYesYesYesYesYes
GitYesYesPartial [dubious – discuss]YesYesYesYesYesYesYesYesYesPartial [needs update]
GNU archYesYesUnknownYesYesYesUnknownUnknownYesUnknownUnknownUnknown
IC ManageYesYesNoYesYesYesYesYesYesYesUnknownUnknown
MKS IntegrityYesYesYesNoYesYesYesYesYesYesYesUnknown
MercurialPartialYesYesYesYesYesYesYesYesYesYesPartialYes
MonotoneYesYesYesNoYesYes, mandatoryYesYesYesUnknownYesUnknown
Perforce Helix CoreYesYesYesPartialYesNoYesYesYesYesYesYes
Rational Team ConcertYesYesYesYesYesYesYesYesYesYesYesUnknown
Source Code Control SystemNoYesNo—N/a—N/aNoNoYesNoNoPartialYesYes
StarTeamYesYesUnknownYesNoNoYesYesYesYesUnknownYes
SubversionNoYesYesPartialYesYesNoYes.YesPartialYesYesYes
Surround SCMYesYesYesYesYesYesYesYesYesYesYesYes
SynergyYesYesYesYesYesYesYesYesYesYesYesYes
VaultYesYesYesNoYesNoNoYesYesUnknownUnknownUnknown
VestaYesYesUnknownUnknownYesNoNoNoYesNoUnknownYes
Visual SourceSafeNoNoUnknownNoYesNoNoUnknownYesYesUnknownUnknown
SoftwareAtomic commitsFile renamesMerge file renamesSymbolic linksPre-/post-event hooksSigned revisionsMerge trackingEnd of line conversionsTagsInternational supportUnicode filename supportSupports large repos

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 referencesPartial checkout/clonePermissionsTimestamp preservationCustom automatic merge toolSupported formatsShared build cache of derived objects
AccuRev SCMYesUnknownYesYesexecution bit onlyYesYesgit (bi-dir)No
Azure DevOpsNoYesUnknownYesYesUnknownYesUnknownUnknown
GNU BazaarYesYesYesNoexecution bit onlyNoYesbzr, subversion, git, hg, any that has a fastexporterNo
BitKeeperPOSIX and RCSYesYesYesYesYesYesbitkeeperNo
CA Software Change ManagerNoYesNoYesexecution bit onlyYesYesCA Software Change ManagerNo
IBM DevOps Code ClearCaseYesNoNoYesYesYesYesClearCaseYes
CVSRCSNoYesYesPartialYesNocvsNo
CVSNTRCSYesYesYesYesYesNocvsYes
darcsNoYesNoNoPartialNoconflicts onlydarcsNo
Dimensions CMYesNoYesYesYesYesYesMigration from ClearCase, Subversion, CVS, PVCS, ChangeMan DSUnknown
FossilNoYesYesNoexecution bit onlyNoNofossil (uses sqlite), any that has a fastexporter; migration from git and svnNo
GitYesYesYesYesexecution bit onlyNoYesgit, cvs, subversion, hg, any that has a fastexporterNo
MercurialYesYesYesYesexecution bit onlythrough (alpha) extensionYeshg, subversion, lossless two-way push to and pull from git, migration from any other format supported by the Convert extension: CVS, Darcs, Bazaar, Monotone, GNU Arch, and PerforceNo
Perforce Helix CoreYesNoNoYesYesYesYesPerforceNo
Rational Team ConcertNoYesYesYesYesUnknownYes—N/aNo
Source Code Control SystemYesNo—N/aYesexecution bit onlysome variants[citation needed]NosccsNo
Surround SCMYesNoNoYesNoYesYesSurroundNo
SubversionYesPartialYesYesexecution bit onlyPartialYessubversionNo
VestaNoNoYes via SDLNoUnknownYesNoVestaYes
Visual SourceSafeYesUnknownUnknownYesYesUnknownYesUnknownNo
SoftwareKeyword expansionInteractive commitsExternal referencesPartial checkout/clonePermissionsTimestamp preservationCustom automatic merge toolSupported formatsShared build cache of derived objects

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 filerebase
AccuRev SCMmkdepotN/AN/AN/Amkstreammkwsupdateanchoradddefunctmovecp [then] add – incl -s – lnmergekeep – promotepurge – revertN/Achstream
Azure DevOpsusing Gitclone using Gitgetcommitshelvesetcheckoutgetlockadddeleterenameusing Gitmergecommitundousing Gitget
GNU Bazaarinit – init -no-tree – init-repo – init-repo -no-treesbranch – branch -no-treepullpushinit – branchcheckout – checkout -lightweightupdateN/AaddrmmvN/Amergecommitrevertsendrebase
BitKeepersetupclonepull -RpushclonecopullUnknownaddrmmvcppullcommitundomakepatchcollapse
IBM DevOps Code ClearCaseinitN/AN/AN/AN/Acheckoutupdatelock – unlockmkelemrmnamemvN/Amergecheckinuncheckout – rmverN/Afindmerge
CVSinitN/AN/AN/AN/AcheckoutupdateUnknownaddrmN/AN/Aupdate -jcommitremove [then] updateN/AN/A
CVSNTinitN/AN/AN/AN/AcheckoutupdateeditaddrmrenameN/Aupdate -jcommitupdate -CN/AN/A
darcsinitclonepullpushN/AclonepullUnknownaddremovemoveN/Apull – pushrecordrevertsend -orebase
Fossilnew – openclonepullpushbranch – commit –branchclone/openupdateN/Aaddrm/delmv/renameN/AmergecommitrevertFossil's repository is single sqlite file itselfN/A
Gitinit – init –bareclone – clone –barefetchpushbranchcheckoutpullN/Aaddrmmvcp [then] git addmergecommitreset –hardbundlerebase
Mercurialinitclonepullpushbookmarkupdate – up – checkout – copull -uN/Aaddremove – rmmove – mvcopy – cpmergecommit – cirevertbundlerebase
MonotoneinitclonepullpushN/AcheckoutupdateUnknownadddroprenameN/AmergecommitrevertN/AN/A
Perforce Helix Corep4 client && p4 syncp4 syncp4 syncp4 submitRequires migration to recent streams featureeditsynclock – unlockadddeletemovecopyintegratesubmitrevertUnknownN/A
Source Code Control SystemcreateN/AN/AN/Aadmin -fbget (readonly) – editget (readonly) – editN/AcreateN/AN/AN/Aedit -ideltaget -rN/Aedit -i
Subversionsvnadmin createsvnadmin hotcopy[work-around]: svnadmin load[work-around]: svnadmin dumpN/Acheckout – coupdate – uplockadddelete – del – remove – rmmove – mv – rename – rencopy – cpmergecommit – cirevertN/AN/A
Surround SCMmkmainlineN/AN/AN/AmkbranchcheckoutgetcheckoutaddrmmoveN/AmergecheckinvoidcheckoutN/Arebase
VestavcreatevreplvreplvreplN/Avcheckoutvadvancevcheckout[... then] vcheckinvrmmv [then] vcheckincp [then] vcheckinvdiffvcheckinvcheckin -c 0vmake [or] vestavadvance
Visual SourceSafe?UnknownUnknownUnknownN/AGet LatestGet LatestCheck OutAdd FilesDelete?Unknown?Check InUndo Check OutUnknownUnknown
SoftwareRepository initclonepullpushLocal branchescheckoutupdatelockaddremovemovecopymergecommitrevertgenerate bundle filerebase

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/outgoingGrepRecord
AccuRev SCMN/Aenable file lockingN/Arevert -purgepromoteN/AN/AN/AUnknown
Azure DevOpsYeslock/unlockshelve/unshelverollbackmergeN/AUnknownUnknownN/A
GNU Bazaar[in '.bazaar/bazaar.conf' file]N/Ashelve/unshelveuncommitmerge (non-tracking)bisect (bisect plugin)missing -theirs-only / -mine-onlygrep (grep plugin)N/A
BitKeeperUnknownUnknownpark/unparkundoUnknownbisectchanges -R/-LgrepUnknown
CVSNT[in '.cvsrc' file]edit -x/uneditN/Aadmin -oyesannotateN/AN/AN/A
DarcsN/AN/Arevert/unrevertunrecordyestest -bisectpull/push -dry-runN/Arecord
FossilN/AN/Astash pop/stash applymerge -rollbackmerge -cherrypickbisectN/AsearchN/A
Git[in '.gitconfig' file]N/Astash/stash popreset HEAD^cherry-pickbisectcherrygrepadd -p
Mercurial[in '.hgrc' file]N/Ashelve/unshelve (bundled extension)strip (bundled extension)graft (core) or transplant (bundled extension)bisectincoming/outgoinggrepcommit -interactive
Monotone[in monotonerc]N/AN/Akill_rev_locallypluckbisectN/AN/AUnknown
Perforce Helix Corevia brokerlock/unlockshelve/unshelveobliterateintegUnknowninterchangesgrepUnknown
SubversionN/Alock/unlockshelve/unshelveN/Asvnmerge cherry-pickingThird party toolstatus -uN/AN/A
Surround SCMN/AcheckoutshelfrollbackduplicatechangesN/AdiffsearchN/A
SoftwareCommand aliasesLock/unlockShelve/unshelveRollbackCherry-pickingBisectIncoming/outgoingGrepRecord

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 IDEs
AccuRev SCMYesWindows (incl. Explorer integration), Linux, Unix, macOS, BeOS availableIntelliJ IDEA, Eclipse, Visual Studio
Azure DevOpsincluded (SharePoint Server used for web services)Windows included; macOS, Unix availableVisual Studio. Java client for Eclipse IDE and IntelliJ IDEA (standard in Ultimate Edition)
GNU Bazaarcan 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
BitKeeperincludedincluded (bkd)Unknown
CA Software Change ManagerincludedEclipse-based GUIEclipse, MS Visual Studio
IBM DevOps Code ClearCaseincluded, 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)
Code Co-opNot necessary since entire project is replicated locallyWindowsUnknown
CVScvsweb, 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
CVSNTcvsweb, ViewVC, othersWindows, macOS, OS/400, GTK, Qt availableAll those that support CVS, plus commercial plugins for SCCI, Bugzilla, Build
darcsdarcs.cgi included; darcsweb, Tracunder development; TortoiseDarcs (Windows Explorer), macOS (alpha),Eclipse (eclipsedarcs), Emacs (vc-darcs.el)
Dimensions CMYesWindows (incl. explorer integration)Eclipse, Visual Studio, IntelliJ IDEA, XCode, Powerbuilder
FossilEmbedded webserver included (ui/server mode), ability to run multiple repositories via CGI modefuel-scmUnknown
GitGitweb, 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
GNU archArchZoomArchWay (GTK2), TlaLogEmacs (standard VC)
IC ManageincludedWindows, Linux, Unix, macOSEmacs, Cadence Design Framework, Synopsys Custom Designer
MKS IntegrityYesWindows, Linux, Unix, Solaris, AIX,Eclipse, Microsoft Visual Studio, Perforce and others. Also provides support for the industry standard Source Code Control (SCC) interface
Mercurialincluded, Trac, KallitheaHgk (Tcl/Tk), (h)gct (Qt), TortoiseHg (Windows Explorer, Nautilus), MacHg, MacMercurial, Murky, SourceTree (Windows/macOS), TortoiseHg, SmartGit/HgIntelliJ IDEA (hg4idea 3rd party plugin), Eclipse (Mercurial Eclipse), NetBeans, Visual Studio 2008, Emacs, Vim (VCSCommand plugin), Komodo IDE, Eric Python IDE, Wing IDE
MonotoneViewMTN, TracMonotone,Monotone-Viz (GTK+), Guitone (Qt), Monotone Browser (GTK+, Perl)Unknown
Perforce Helix Coreincluded, P4Web, P4FTPWindows, Linux, Mac macOSEclipse, Visual Studio, Matlab; Game Engines: Unity, Unreal, Amazon Lumberyard; Graphics: Autodesk Maya, 3ds max, Adobe PS
Rational Team ConcertYesEclipse-based GUIEclipse integration; MS Visual Studio integration(Limited)
StarTeamincludedWindows, Java, Eclipse, Visual Studio, BDS2006 integration, plus Java command-lineIntelliJ IDEA (standard in Ultimate Edition), Visual Studio, JBuilder, Eclipse
SubversionApache 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.
Surround SCMYesWindows, macOS, LinuxEclipse, IntelliJ IDEA, JDeveloper, NetBeans, Visual Studio, WebStorm
Synergyvia Telelogic Change interfaceWindows (incl. explorer integration), Linux, UnixEclipse (Telelogic proprietary), Visual Studio (Telelogic proprietary), IntelliJ IDEA (Telelogic proprietary)
VaultincludedWindows, Unix-like, macOSVisual Studio 2003 and higher, Eclipse 3.2 and higher
VestaVestaWebNoNo
Visual SourceSafenone 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)
SoftwareWeb interfacesStand-alone GUIsIntegration and/or plug-ins for IDEs

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 users
AccuRev SCMFirst publicly released in 2002
Azure DevOps ServerFirst publicly released in March, 2006 as Visual Studio Team System, renamed to Team Foundation Server in 2010 and Azure DevOps Server in 2019.Microsoft
Azure DevOps ServicesFirst 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
GNU BazaarInitial release March 26, 2005. Loosely related to baz. Sponsored by Canonical Ltd.
BitKeeperInitial release May 4, 2000. Influenced by Sun WorkShop TeamWare
CA Software Change ManagerOriginal company founded in 1977; CA SCM (then called CCC/Harvest) first released in 1995.
IBM DevOps Code ClearCaseDeveloped 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.
Code Co-opThe first distributed VCS, demoed in 1997, released soon after.
CVSFirst publicly released July 3, 1986; based on RCSNetBSD, OpenBSD
CVSNTFirst publicly released 1998; based on CVS. Started by CVS developers with the goal adding support for a wider range of development methods and processes.
darcsFirst announced on April 9, 2003
Dimensions CMDeveloped 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).
FossilFossil and SQLite have used Fossil since 21 July 2007.
GitStarted 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
GNU archStarted by Tom Lord in 2001, it later became part of the GNU project. Lord resigned as maintainer in August 2005.
IC ManageDeveloped by IC Manage, Inc which was founded in 2003 by Shiv Sikand and Dean Drako.
PTC IntegrityOriginally developed by MKS Software. Purchased by PTC in May 2011
MercurialStarted April 6, 2005 by Matt Mackall, following the BitKeeper controversy. First released on April 19, 2005GNU Multi-Precision Library, GNU Octave, Pidgin, XEmacs
MonotoneFirst released in April 2003
Perforce Helix CoreDeveloped by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald.
Rational Team ConcertVersion 1.0 released in June, 2008
Revision Control SystemJuly 1985
Source Code Control SystemStarted 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.
StarTeamVersion 1.0 1995; Developed by StarBase software, acquired by Borland(which was acquired by Micro Focus).
Apache SubversionStarted in 2000 by CVS developers with goal of replacing CVS
SynergyDeveloped 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.
VaultFirst publicly released in February, 2003Unknown
VestaFirst publicly released under the LGPL in 2001
Visual SourceSafeoriginally 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
SoftwareHistoryNotable current users

See also

Notes