Comparison of version-control software

From Wikipedia, the free encyclopedia
Revision as of 16:23, 16 June 2025 by 46.187.164.95 (talk) (General information: Monotone is inactive for a good 10 years now)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Short description

Script error: No such module "Hatnote". Template:Cleanup

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.
Software Maintainer Development status Repository model Concurrency model License Supported platforms Financial cost
Template:Rh | AccuRev SCM Micro Focus International Active Client–server Merge or lock Template:Proprietary Most Java Platforms (Unix-like, Windows, macOS) $350 per seat, quoted on an individual basis.
Template:Rh | Azure DevOps Microsoft Active Client–server, Distributed Merge or lock Template:Proprietary Windows, cross-platform via Azure DevOps Services Free 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.
Template:Rh | GNU Bazaar Canonical Ltd. Last release from 2016, forked as Breezy Distributed and Client–server Merge Template:Open source Unix-like, Windows, macOS Free
Template:Rh | BitKeeper BitMover Inc. Unmaintained; last updated December 29, 2018 Distributed Merge Template:Open source Unix-like, Windows, macOS Free
Template:Rh | IBM DevOps Code ClearCase IBM Rational Active Client–server Merge or lock[nb 1] Template:Proprietary Linux, 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)
Template:Rh | Code Co-op Reliable Software Active Distributed Merge Template:Open source Windows $150 per seat
Template:Rh | CVS The CVS Team[1] Maintained but new features not added; last release from 2008 Client–server Merge Template:Open source Unix-like, Windows, macOS Free
Template:Rh | CVSNT March Hare Software[2] and community members Active Client–server Merge or lock GPL or proprietary Unix-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
Template:Rh | darcs The Darcs team Active Distributed Merge Template:Open source Unix-like, Windows, macOS Free
Template:Rh | Dat The Dat team Active Distributed Merge Template:Open source Unix-like, Windows, macOS Free
Template:Rh | Dimensions CM Serena Software Active Client–server Merge or lock Template:Proprietary Windows, Linux, Solaris, AIX, HP UX, z/OS Paid
Template:Rh | Fossil D. Richard Hipp Active Distributed Merge Template:Open source POSIX, Windows, macOS, Other Free
Template:Rh | Git Junio Hamano Active Distributed Merge Template:Open source POSIX, Windows, macOS Free
Template:Rh | GNU arch Andy Tai Unmaintained Distributed Merge Template:Open source Unix-like, Windows, macOS Free
Template:Rh | IC Manage IC Manage Inc. Active Client–server Merge or lock Template:Proprietary Unix-like, Windows, macOS Paid
Template:Rh | PTC Integrity PTC Active Client–server Merge or lock Template:Proprietary Unix-like, Windows Paid
Template:Rh | Mercurial Mercurial Community Active Distributed Merge Template:Open source Unix-like, Windows, macOS Free
Template:Rh | Monotone Nathaniel Smith, Graydon Hoare Unmaintained; last update in 2014 Distributed Merge Template:Open source Unix-like, Windows, macOS Free
Template:Rh | Perforce Helix Core Perforce Software Inc. Active Client–server and Distributed Merge or lock Template:Proprietary Unix-like, Windows, macOS Available as perpetual license and subscriptions; prices vary based on configurations and options[3]
Template:Rh | Plastic SCM Codice Software Active Client–server and Distributed Merge or lock Template:Proprietary Linux, Windows, macOS Free 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.[4]
Template:Rh | PVCS Serena Software Active Client–server Lock Template:Proprietary Windows, Unix-like Paid
Template:Rh |Rational Team Concert IBM Rational Active Client–server[nb 2][5][6] Merge or lock Template:Proprietary Linux, Windows, AIX, Solaris, HP UX, IBM i, OS/390, z/OS, macOS Free for up to 10 users, else paid
Template:Rh | Revision Control System Thien-Thi Nguyen Active Local Merge or lock Template:Open source Unix-like Free
Template:Rh | Source Code Control System (SCCS) Jörg Schilling[nb 3] Active Local Lock[nb 4] CDDL – proprietary[nb 5] Unix-like, macOS Free CDDL-licensed versions or paid in some UNIX distributions.
Template:Rh | StarTeam Borland (Micro Focus) Active Client–server Merge or lock Template:Proprietary Windows and Cross-platform via Java based client Paid
Template:Rh | Subversion (SVN) Apache Software Foundation[7] Active Client–server Merge or lock[nb 6] Template:Open source Unix-like, Windows, macOS Free
Template:Rh | Surround SCM Perforce Software Inc. Active Client–server Merge or lock Template:Proprietary Linux, Windows, macOS $595 per user; $29/month subscription
Template:Rh | Synergy IBM Rational Active Client–server and Distributed Merge or lock Template:Proprietary Linux, Windows, Unix-like Paid[8]
Template:Rh | Vault SourceGear LLC Active Client–server Merge or lock Template:Proprietary Unix-like, Linux, Windows $300 per user
Template:Rh | Vesta Kenneth Schalk; Tim Mann,[9][10] Web site not updated since 2006; latest release Template:Start date Distributed NFS-protocol-emulation choice to optionally confederate clients and/or servers Lock on branch; merge branch-to-branch Template:Open source Tru64, Linux Free
Template:Rh | Visual SourceSafe (VSS) Microsoft Serious bug fixes only Shared Folder Merge or lock Template:Proprietary Windows $500 per license approximately, or single license included with each MSDN subscription.
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(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.
Software Programming language Storage method Scope of change Revision IDs Network protocols Source code size
Template:Rh | AccuRev SCM C++, Java Changeset File Number pair NN/NN custom Template:Unk
Template:Rh | Azure DevOps C++ and C# Changeset File and Tree Numbers SOAP over HTTP or HTTPS, Ssh Template:Unk
Template:Rh | GNU Bazaar Python 2, Pyrex (optional), C[nb 7] Snapshot Tree Pseudorandom custom, custom over ssh, custom over HTTP, HTTP, SFTP, FTP, email bundles,[nb 8] WebDAV (with plugin) 4.1 MB
Template:Rh | BitKeeper C Changeset Tree Changeset keys, numbers custom, HTTP, rsh, ssh, email 99 MB
Template:Rh | CA Software Change Manager C, C++, Java, HTML Changeset and Snapshot File and TreeScript error: No such module "Unsubst". Numbers HTTP, TCP/IP Template:Unk
Template:Rh | IBM DevOps Code ClearCase C, Java, Perl Changeset File and Tree [11] Numbers custom (CCFS), custom (MVFS filesystem driver), HTTP Template:Unk
Template:Rh | Code Co-op C++ Changeset Template:Unk User ID-Ordinal e-mail (MAPI, SMTP/POP3, Gmail), LAN Template:Unk
Template:Rh | CVS C Changeset File Numbers pserver, ssh 10.3 MB
Template:Rh | CVSNT C++ Changeset File and Tree[12] Numbers custom over ssh, sspi, sserver, gserver, pserver 55 MB
Template:Rh | darcs Haskell Changeset (Patch)[nb 9] Tree n/a custom over ssh, HTTP, email 1.7 MB
Template:Rh | Dimensions CM C, C++, Java, C# Snapshot or changeset File and Tree Numbers Custom, HTTP/HTTPS Template:Unk
Template:Rh | Fossil C Snapshot or changeset [13] Tree SHA-1 or SHA-3 hashes [14] HTTP/HTTPS, custom over ssh 7.2 MB[nb 10]
Template:Rh | Git C, shell scripts, Perl Snapshot Tree SHA-1 hashes custom (git), custom over ssh,[15] HTTP/HTTPS, rsync, email, bundles 23 MB [16]
Template:Rh | GNU arch C, shell scripts Changeset Tree Numbers HTTP, WebDAV Template:Unk
Template:Rh | IC Manage C++, C Changeset Template:Unk Numbers custom Template:Unk
Template:Rh | Mercurial Python, C Changeset Tree Numbers,[nb 11] SHA-1 hashes custom over ssh, HTTP, email bundles (with standard plugin) 20 MB
Template:Rh | MKS Integrity C, Java Changeset File Numbers custom, HTTP Template:Unk
Template:Rh | Monotone C++ Hybrid[nb 12] Tree SHA-1 hashes custom (netsync), custom over ssh, file system 4.4 MB
Template:Rh | Perforce Helix Core C++, C Changeset Tree Numbers custom Template:Unk
Template:Rh | PVCS C++, C Changeset File Numbers Template:Unk Template:Unk
Template:Rh | Rational Team Concert Java Changeset Tree Numbers REST services over HTTP/HTTPS Template:Unk
Template:Rh | Revision Control System C Changeset File Numbers File system 5.3 MB
Template:Rh | Source Code Control System C Changeset File Numbers NFS 1.3 MB
Template:Rh | StarTeam C++, C, Java Snapshot File and Tree MD5 hashes custom, TCP/IP Template:Unk
Template:Rh | Subversion C Changeset and Snapshot Tree Numbers custom (svn), custom over ssh, HTTP and SSL (using WebDAV) 41 MB
Template:Rh | Surround SCM C++ Changeset File and Tree Numbers TCP/IP Template:Unk
Template:Rh | Synergy Java Changeset (text), Snapshot(binary) File Numbers custom, custom over ssh, HTTP Template:Unk
Template:Rh | Vault C# Changeset File and Tree Numbers HTTP, HTTPS Template:Unk
Template:Rh | Vesta C++ Snapshot Tree Template:Unk NFS 15.8 MB
Template:Rh | Visual SourceSafe C Snapshot File Numbers SMB, DCOM Template:Unk
Software Programming language Storage method Scope of change Revision IDs Network protocols Source 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.
  • 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?

Template:Sort-under

Software Atomic commits File renames Merge file renames Symbolic links Pre-/post-event hooks Signed revisions Merge tracking End of line conversions Tags International support Unicode filename support Supports large repos
Template:Rh | AccuRev SCM Yes Yes Partial[nb 13] Yes Yes Yes Yes Yes Template:N/A Yes Yes[17] Yes[18][19]
Template:Rh | Azure DevOps Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Template:Rh | GNU Bazaar Yes Yes Yes Yes Yes Yes Yes Yes[20] Yes Yes Yes Template:Unk
Template:Rh | BitKeeper Yes Yes Yes Yes Yes Template:Unk Yes Yes Yes Template:Unk Template:Unk Yes
Template:Rh | CA Software Change Manager Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Template:Unk
Template:Rh | IBM DevOps Code ClearCase Partial[nb 14] Yes Yes Yes Yes Yes Yes Yes Yes Yes[21] Template:Unk Yes
Template:Rh | Code Co-op Yes Yes Yes No Partial No No No Yes Template:Unk Template:Unk Template:Unk
Template:Rh | CVS No No No No Partial No No Yes Yes Template:Unk No Yes
Template:Rh | CVSNT Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Template:Rh | darcs Yes Yes Yes No[nb 15] Yes Yes Template:N/A[nb 16] No Yes No Yes[nb 17] Template:Unk
Template:Rh | Dimensions CM Yes Yes Yes No Yes Template:Unk Yes Yes Yes [nb 18] No [nb 19] Yes Yes
Template:Rh | Fossil Yes Yes Yes Yes Yes[22] Yes Yes Yes[nb 20] Yes Yes Yes Yes[23]
Template:Rh | Git Yes Partial[nb 21] Yes Yes Yes Yes[nb 22] Yes Yes Yes Yes Yes[nb 23] Partial[nb 24]
Template:Rh | GNU arch Yes Yes Template:Unk Yes Yes Yes Template:Unk Template:Unk Yes Template:Unk Template:Unk Template:Unk
Template:Rh | IC Manage Yes Yes No Yes Yes Yes Yes Yes Yes Yes Template:Unk Template:Unk
Template:Rh | MKS Integrity Yes Yes Yes No Yes Yes[nb 25] Yes[nb 26] Yes Yes Yes Yes Template:Unk
Template:Rh | Mercurial Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes[nb 27] Partial[nb 28] Yes[24]
Template:Rh | Monotone Yes Yes Yes No[nb 29] Yes Yes, mandatory Yes Yes Yes Template:Unk Yes Template:Unk
Template:Rh | Perforce Helix Core Yes Yes[25] Yes[26] Partial[nb 30] Yes No Yes[27] Yes Yes Yes[28] Yes[29] Yes
Template:Rh | Rational Team Concert Yes Yes Yes Yes Yes[nb 31] Yes Yes Yes Yes Yes Yes Template:Unk
Template:Rh | Source Code Control System Yes No Template:N/A Template:N/A No No Yes No No Partial[nb 32] Yes Yes
Template:Rh | StarTeam Yes[nb 33] Yes Template:Unk Yes No No Yes Yes Yes Yes Template:Unk Yes
Template:Rh | Subversion Yes Yes[nb 34] Partial[nb 35] Yes Yes No[nb 36] Yes.[nb 37] Yes Partial[nb 38] Yes Yes Yes
Template:Rh | Surround SCM Yes Yes Yes Yes Yes Yes Yes Yes Yes[30] Yes Yes Yes
Template:Rh | Synergy Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes[nb 39] Yes
Template:Rh | Vault Yes Yes Yes No Yes No No Yes Yes Template:Unk Template:Unk Template:Unk
Template:Rh | Vesta Yes Yes Template:Unk Template:Unk Yes No No No Yes No Template:Unk Yes
Template:Rh | Visual SourceSafe No No[nb 40] Template:Unk No Yes No No Template:Unk Yes Yes Template:Unk Template:Unk
Software Atomic commits File renames Merge file renames Symbolic links Pre-/post-event hooks Signed revisions Merge tracking End of line conversions Tags International support Unicode filename support Supports 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

Template:Sort-under

Software Keyword expansion Interactive commits External references Template:Verth Permissions Timestamp preservation Custom automatic merge tool Supported formats Template:Verth
AccuRev SCM Yes Template:Unk Yes Yes execution bit only Yes Yes git (bi-dir)[31] No
Azure DevOps No Yes Un­known Yes Yes Un­known Yes Un­known Un­known
GNU Bazaar Yes[32] Yes[33] Yes[34] No execution bit only No[nb 41] Yes[35] bzr, subversion,[36] git,[37] hg,[38] any that has a fastexporter No
BitKeeper POSIX and RCS Yes Yes Yes Yes Yes Yes bitkeeper No
CA Software Change Manager No Yes No Yes execution bit only Yes Yes CA Software Change Manager No
IBM DevOps Code ClearCase Yes[39] No No Yes Yes Yes[nb 42] Yes ClearCase Yes
CVS RCS No Yes Yes[nb 43] Partial[nb 44] Yes No cvs No
CVSNT RCS Yes[nb 45] Yes[nb 46] Yes[nb 47] Yes Yes No cvs Yes[nb 48]
darcs No Yes No No[nb 49] Partial[nb 50] No conflicts only darcs No
Dimensions CM Yes No Yes[nb 51] Yes Yes Yes Yes Migration from ClearCase, Subversion, CVS, PVCS, ChangeMan DS Template:Unk
Fossil No Yes Yes[nb 52] No execution bit only[40] No No fossil (uses sqlite), any that has a fastexporter;[41] migration from git and svn[42] No
Git No[nb 53] Yes[nb 54] Yes[43] Yes[44] execution bit only No[nb 55] Yes git, cvs, subversion, hg, any that has a fastexporter No
Mercurial Yes[45] Yes[46] Yes[47] Yes[48] execution bit only through (alpha) extension[49] Yes[50] hg, subversion,[51] lossless two-way push to and pull from git,[52] migration from any other format supported by the Convert extension:[53] CVS, Darcs, Bazaar, Monotone, GNU Arch, and Perforce[54] No
Perforce Helix Core Yes[55] No No Yes Yes Yes[55] Yes[55] Perforce No
Rational Team Concert No Yes Yes Yes Yes Template:Unk Yes N/A No
Source Code Control System Yes No Template:N/A Yes execution bit only some variantsScript error: No such module "Unsubst". No sccs No
Surround SCM Yes No No Yes No Yes Yes[nb 56] Surround No
Subversion Yes[56] Partial[nb 57] Yes[57] Yes execution bit only Partial[nb 58] Yes[nb 59] subversion No
Vesta No No Yes via SDL No Template:Unk Yes No Vesta Yes
Visual SourceSafe Yes Template:Unk Template:Unk Yes Yes Template:Unk Yes Template:Unk No
Software Keyword expansion Interactive commits External references Template:Verth Permissions Timestamp preservation Custom automatic merge tool Supported formats Template:Verth

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.

Template:Sort-under

Software Repository init clone pull push Local branches checkout update lock add remove move copy merge commit revert generate bundle file rebase
AccuRev SCM Template:Mono Template:N/A Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono
[then]
Template:Mono
Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono
Azure DevOps using Git clone using Git get commit shelveset checkout get lock add delete rename using Git merge commit undo using Git get
GNU Bazaar Template:Mono[nb 60]Template:Mono[nb 61] Template:Mono[nb 62] Template:Mono Template:Mono Template:Mono Template:Mono[nb 63] Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono[nb 64]
BitKeeper Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Unk Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono
IBM DevOps Code ClearCase Template:Mono Template:N/A Template:N/A Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono
CVS Template:Mono Template:N/A Template:N/A Template:N/A Template:N/A Template:Mono Template:Mono Template:Unk Template:Mono Template:Mono Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono [then] Template:Mono Template:N/A Template:N/A
CVSNT Template:Mono Template:N/A Template:N/A Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:N/A
darcs Template:Mono Template:Mono Template:Mono[58] Template:Mono Template:N/A Template:Mono Template:Mono Template:Unk Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono[nb 65] Template:Mono
Fossil Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Fossil's repository is single sqlite file itself Template:N/A
Git Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono
[then]
Template:Mono[nb 66]
Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono
Mercurial Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono[59]
Monotone Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Unk Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:N/A
Perforce Helix Core Template:Mono Template:Mono Template:Mono Template:Mono Requires migration to recent streams feature Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Unk Template:N/A
Source Code Control System Template:Mono Template:N/A Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A[nb 67] Template:Mono Template:N/A Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono
Subversion Template:Mono Template:Mono [work-around]: Template:Mono [work-around]: Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:N/A
Surround SCM Template:Mono Template:N/A Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono
Vesta Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:Mono [… then]
Template:Mono[nb 68]
Template:Mono Template:Mono
[then]
Template:Mono[nb 69]
Template:Mono
[then]
Template:Mono[nb 70]
Template:Mono Template:Mono Template:Mono Template:Mono [or] Template:Mono Template:Mono
Visual SourceSafe ? Template:Unk Template:Unk Template:Unk Template:N/A Template:Button Template:Button Template:Button Template:Button Template:Button ? Template:Unk ? Template:Button Template:Button Template:Unk Template:Unk
Software Repository init clone pull push Local branches checkout update lock add remove move copy merge commit revert generate bundle file rebase

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.

Template:Sort-under

Software Command aliases Lock/unlock Shelve/unshelve Rollback Cherry-picking Bisect Incoming/outgoing Grep Record
AccuRev SCM Template:N/A enable file locking Template:N/A Template:Mono Template:Mono Template:N/A Template:N/A Template:N/A Template:Unk
Azure DevOps Yes Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Unk Template:Unk Template:N/A
GNU Bazaar [in '.bazaar/bazaar.conf' file] Template:N/A Template:Mono Template:Mono Template:Mono (non-tracking) Template:Mono (bisect plugin) missing Template:Mono / Template:Mono Template:Mono (grep plugin) Template:N/A
BitKeeper Template:Unk Template:Unk Template:Mono Template:Mono Template:Unk Template:Mono Template:Mono Template:Mono Template:Unk
CVSNT [in '.cvsrc' file] Template:Mono[nb 71] Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:N/A[60] Template:N/A
Darcs Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono
Fossil Template:N/A Template:N/A Template:Mono[nb 72] Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:N/A
Git [in '.gitconfig' file] Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono
Mercurial [in '.hgrc' file] Template:N/A Template:Mono (bundled extension[61]) Template:Mono (bundled extension[62]) Template:Mono (core[63]) or Template:Mono (bundled extension[64]) Template:Mono Template:Mono Template:Mono Template:Mono
Monotone [in monotonerc] Template:N/A Template:N/A Template:Mono Template:Mono Template:Mono Template:N/A Template:N/A Template:Unk
Perforce Helix Core Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Unk Template:Mono Template:Mono Template:Unk
Subversion Template:N/A Template:Mono Template:Mono Template:N/A Template:Mono Third party tool[nb 73] Template:N/A Template:N/A Template:N/A
Surround SCM Template:N/A Template:Mono Template:Mono Template:Mono Template:Mono Template:N/A Template:Mono Template:Mono Template:N/A
Software Command aliases Lock/unlock Shelve/unshelve Rollback Cherry-picking Bisect Incoming/outgoing Grep Record

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.
Software Web interfaces Stand-alone GUIs Integration and/or Plug-ins for IDEs
Template:Rh | AccuRev SCM Yes Windows (incl. Explorer integration), Linux, Unix, macOS, BeOS available IntelliJ IDEA, Eclipse, Visual Studio
Template:Rh | Azure DevOps included (SharePoint Server used for web services) Windows included; macOS, Unix available Visual Studio. Java client for Eclipse IDE and IntelliJ IDEA (standard in Ultimate Edition)
Template:Rh | GNU Bazaar can use a plain webserver Olive, bzr-gtk (GTK+), Bazaar Explorer (Qt), QBzr (Qt), TortoiseBzr (Windows) Eclipse (BzrEclipse, QBzrEclipse), Visual Studio (bzr-visualstudio), TextMate (TextMateBundle), Komodo IDE, Wing IDE
Template:Rh | BitKeeper included included (bkd) Template:Unk
Template:Rh | CA Software Change Manager included Eclipse-based GUI Eclipse, MS Visual Studio
Template:Rh | IBM DevOps Code ClearCase included, Clearcase Web Interface older: 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)
Template:Rh | Code Co-op Not necessary since entire project is replicated locally Windows Template:Unk
Template:Rh | CVS cvsweb, ViewVC, others TortoiseCVS (Windows Explorer), TkCVS (Tcl/Tk), WinCVS, macOS, GTK, Qt available Eclipse (Team), KDevelop (standard), IntelliJ IDEA (standard in Community and Ultimate Editions), Emacs (standard VC), Komodo IDE, BBEdit, Wing IDE
Template:Rh | CVSNT cvsweb, ViewVC, others Windows, macOS, OS/400, GTK, Qt available All those that support CVS, plus commercial plugins for SCCI, Bugzilla, Build
Template:Rh | darcs darcs.cgi included; darcsweb, Trac under development; TortoiseDarcs (Windows Explorer), macOS (alpha), Eclipse (eclipsedarcs), Emacs (vc-darcs.el)
Template:Rh | Dimensions CM Yes Windows (incl. explorer integration) Eclipse, Visual Studio, IntelliJ IDEA, XCode, Powerbuilder
Template:Rh | Fossil Embedded webserver included (ui/server mode), ability to run multiple repositories via CGI mode fuel-scm Template:Unk
Template:Rh | Git Gitweb, wit, cgit, GitLab, GitHub, gitorious, Trac, Kallithea, Bitbucket, Stash, Springloops, Bonobo Git Server, Gitea, Gogs gitk(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 Merge Aptana 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); 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
Template:Rh | GNU arch ArchZoom ArchWay (GTK2), TlaLog Emacs (standard VC)
Template:Rh | IC Manage included Windows, Linux, Unix, macOS Emacs, Cadence Design Framework, Synopsys Custom Designer
Template:Rh | MKS Integrity Yes Windows, Linux, Unix, Solaris, AIX, Eclipse, Microsoft Visual Studio, Perforce and others. Also provides support for the industry standard Source Code Control (SCC) interface[65]
Template:Rh | Mercurial included,[nb 74] Trac, Kallithea Hgk (Tcl/Tk), (h)gct (Qt), TortoiseHg (Windows Explorer, Nautilus), MacHg,

MacMercurial, Murky, SourceTree (Windows/macOS), TortoiseHg, SmartGit/Hg

IntelliJ IDEA (hg4idea 3rd party plugin), Eclipse (Mercurial Eclipse), NetBeans, Visual Studio 2008, Emacs, Vim (VCSCommand plugin), Komodo IDE, Eric Python IDE, Wing IDE
Template:Rh | Monotone ViewMTN, TracMonotone, Monotone-Viz (GTK+), Guitone (Qt), Monotone Browser (GTK+, Perl) Template:Unk
Template:Rh | Perforce Helix Core included, P4Web, P4FTP Windows, Linux, Mac macOS Eclipse, Visual Studio, Matlab; Game Engines: Unity, Unreal, Amazon Lumberyard; Graphics: Autodesk Maya, 3ds max, Adobe PS
Template:Rh | Rational Team Concert Yes Eclipse-based GUI Eclipse integration; MS Visual Studio integration(Limited)
Template:Rh | StarTeam included Windows, Java, Eclipse, Visual Studio, BDS2006 integration, plus Java command-line IntelliJ IDEA (standard in Ultimate Edition), Visual Studio, JBuilder, Eclipse
Template:Rh | Subversion Apache 2 module included, WebSVN, ViewSVN, ViewVC, Trac, SharpForge, sventon, Springloops Java, KDESVN, macOS[66] (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
Template:Rh | Surround SCM Yes Windows, macOS, Linux Eclipse, IntelliJ IDEA, JDeveloper, NetBeans, Visual Studio, WebStorm
Template:Rh | Synergy via Telelogic Change interface Windows (incl. explorer integration), Linux, Unix Eclipse (Telelogic proprietary), Visual Studio (Telelogic proprietary), IntelliJ IDEA (Telelogic proprietary)
Template:Rh | Vault included Windows, Unix-like, macOS Visual Studio 2003 and higher, Eclipse 3.2 and higher
Template:Rh | Vesta VestaWeb No No
Template:Rh | Visual SourceSafe none included; SSWI, VSS Remoting Windows included; Linux, macOS and Solaris using SourceOffSite; any Java VM using Sourceanywhere for VSS Visual Studio, IntelliJ IDEA (standard in Ultimate Edition)
Software Web interfaces Stand-alone GUIs Integration 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.
Software History Notable current users
Template:Rh | AccuRev SCM Template:Dts First publicly released in 2002
Template:Rh | Azure DevOps Server Template:Dts 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
Template:Rh | Azure DevOps Services Template:Dts 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
Template:Rh | GNU Bazaar Template:Dts Initial release March 26, 2005. Loosely related to baz. Sponsored by Canonical Ltd.
Template:Rh | BitKeeper Template:Dts Initial release May 4, 2000. Influenced by Sun WorkShop TeamWare
Template:Rh | CA Software Change Manager Template:Dts Original company founded in 1977; CA SCM (then called CCC/Harvest) first released in 1995.
Template:Rh | IBM DevOps Code ClearCase Template:Dts 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.
Template:Rh | Code Co-op Template:Dts The first distributed VCS, demoed in 1997,[67] released soon after.
Template:Rh | CVS Template:Dts First publicly released July 3, 1986; based on RCS NetBSD, OpenBSD
Template:Rh | CVSNT Template:Dts 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.
Template:Rh | darcs Template:Dts First announced on April 9, 2003
Template:Rh | Dimensions CM Template:Dts 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).
Template:Rh | Fossil Template:Dts Fossil and SQLite have used Fossil since 21 July 2007.
Template:Rh | Git Template:Dts Started by Linus Torvalds in April 2005, following the BitKeeper controversy.[68] Linux kernel, Android, OpenJDK, Bugzilla, DragonFly BSD, FreeBSD, gcc,[69] GNOME, GNU Emacs, GnuPG,[70] GRUB2, KDE, MySQL, Perl 5,[71] PostgreSQL, Python,[72] 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,[73] 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,[74] Huawei, Apple, Amazon, LG
Template:Rh | GNU arch Template:Dts Started by Tom Lord in 2001, it later became part of the GNU project. Lord resigned as maintainer in August 2005.
Template:Rh | IC Manage Template:Dts Developed by IC Manage, Inc which was founded in 2003 by Shiv Sikand and Dean Drako.
Template:Rh | PTC Integrity Template:Dts Originally developed by MKS Software. Purchased by PTC in May 2011[75]
Template:Rh | Mercurial Template:Dts Started April 6, 2005 by Matt Mackall, following the BitKeeper controversy.[68] First released on April 19, 2005 GNU Multi-Precision Library, GNU Octave, Pidgin, XEmacs[76]
Template:Rh | Monotone Template:Dts First released in April 2003
Template:Rh | Perforce Helix Core Template:Dts Developed by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald.
Template:Rh | Rational Team Concert Template:Dts Version 1.0 released in June, 2008
Template:Rh | Revision Control System Template:Dts July 1985
Template:Rh | Source Code Control System Template:Dts Started by Marc Rochkind in 1972 (binary history files, written in Snobol on IBM-370,[77] SCCSv4 with text history files was published February 18, 1977.[78] The same history file format is still used in SCCS 5.0.[79]
Template:Rh | StarTeam Template:Dts Version 1.0 1995;[80] Developed by StarBase software, acquired by Borland(which was acquired by Micro Focus).
Template:Rh | Apache Subversion Template:Dts Started in 2000 by CVS developers with goal of replacing CVS
Template:Rh | Synergy Template:Dts 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.
Template:Rh | Vault Template:Dts First publicly released in February, 2003 Template:Unk
Template:Rh | Vesta Template:Dts First publicly released under the LGPL in 2001
Template:Rh | Visual SourceSafe Template:Dts 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
Software History Notable current users

See also

Notes

Template:Reflist

References

Template:Reflist


Template:Version control software


Cite error: <ref> tags exist for a group named "nb", but no corresponding <references group="nb"/> tag was found

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "citation/CS1".
  11. Script error: No such module "citation/CS1".
  12. Script error: No such module "citation/CS1".
  13. Script error: No such module "citation/CS1".
  14. Script error: No such module "citation/CS1".
  15. Script error: No such module "citation/CS1".
  16. Script error: No such module "citation/CS1".
  17. Script error: No such module "citation/CS1".
  18. Script error: No such module "citation/CS1".
  19. Script error: No such module "citation/CS1".
  20. Script error: No such module "citation/CS1".
  21. Support Policy for National Languages and ClearCase from IBM Support
  22. https://fossil-scm.org/home/doc/tip/www/hooks.md
  23. https://www.fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki#scale
  24. With the Largefiles Extension in core since Hg Rev.:2.0 (2011), the remotefilelog extension (2014), the fsmonitor extension in core since Hg Rev.:3.8 (2016) and the experimental sparse extension in core since Hg Rev.:4.3 (2017).
  25. [1] Template:Webarchive from the Perforce User's Guide
  26. [2] Template:Webarchive from the Perforce User's Guide
  27. Script error: No such module "citation/CS1".
  28. Script error: No such module "citation/CS1".
  29. Script error: No such module "citation/CS1".
  30. [3] – Seapine Software Releases Surround SCM 2009
  31. Script error: No such module "citation/CS1".
  32. Script error: No such module "citation/CS1".
  33. Script error: No such module "citation/CS1".
  34. Script error: No such module "citation/CS1".
  35. Script error: No such module "citation/CS1".
  36. Script error: No such module "citation/CS1".
  37. Script error: No such module "citation/CS1".
  38. Script error: No such module "citation/CS1".
  39. IBM Rational ClearCase: The ten best triggers from IBM DeveloperWorks
  40. The manifest, Fossil file formats
  41. Script error: No such module "citation/CS1".
  42. "FossilHelp: import"
  43. Script error: No such module "citation/CS1".
  44. Script error: No such module "citation/CS1".
  45. Script error: No such module "citation/CS1".
  46. Script error: No such module "citation/CS1".
  47. Script error: No such module "citation/CS1".
  48. With the sparse extension included in core since Hg Rev.:4.3.
  49. Script error: No such module "citation/CS1".
  50. Script error: No such module "citation/CS1".
  51. Script error: No such module "citation/CS1".
  52. Script error: No such module "citation/CS1".
  53. Script error: No such module "citation/CS1".
  54. "Mercurial: the definitive guide: Appendix: Migrating to Mercurial"
  55. a b c Script error: No such module "citation/CS1".
  56. Script error: No such module "citation/CS1".
  57. Script error: No such module "citation/CS1".
  58. darcs's default pull command is interactive, allowing the user to choose which patches to apply (merge) in realtime
  59. Script error: No such module "citation/CS1".
  60. Script error: No such module "citation/CS1".
  61. Script error: No such module "citation/CS1".
  62. Script error: No such module "citation/CS1".
  63. Script error: No such module "citation/CS1".
  64. Script error: No such module "citation/CS1".
  65. Script error: No such module "citation/CS1".
  66. Script error: No such module "citation/CS1".
  67. Script error: No such module "citation/CS1".
  68. a b Towards A Better SCM: Revlogs and Mercurial, presented by Matt Mackall to the Ottawa Linux Symposium, July 2006
  69. Script error: No such module "citation/CS1".
  70. Script error: No such module "citation/CS1".
  71. Script error: No such module "citation/CS1".
  72. Script error: No such module "citation/CS1".
  73. Script error: No such module "citation/CS1".
  74. Script error: No such module "citation/CS1".
  75. Script error: No such module "citation/CS1".
  76. Script error: No such module "citation/CS1"..
  77. Script error: No such module "citation/CS1".
  78. http://minnie.tuhs.org/cgi-bin/utree.pl?file=PWB1/usr/news/pibs PWB UNIX product announcement
  79. Compare the SCCS 4 file format with the SCCS 5.0 Template:Webarchive file format (as manpage sccsfile(4) in Script error: No such module "citation/CS1".
  80. Starteam®