Jump to content

Comparison of version-control software

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Alejandro66 (talk | contribs) at 10:20, 10 September 2010. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The following tables compare general and technical information for notable revision control and software configuration management (SCM) software. This article is not all-inclusive and may become out of date quickly.

General information

Software Maintainer Development status Repository model Concurrency model License Platforms supported Cost
AccuRev [8] AccuRev, Inc. actively developed Client–server Merge or lock Proprietary Any Java Platform (Unix-like, Windows, Mac OS X) Non-free $1495 (enterprise) for each license, free 5-user 30 day trial licenses available
Bazaar[9] Canonical Ltd. actively developed Distributed[1] Merge GNU GPL Unix-like, Windows, Mac OS X Free
BitKeeper[10] BitMover Inc. actively developed Distributed Merge Proprietary Unix-like, Windows, Mac OS X Non-free Quoted on an individual basis.
ClearCase[11] IBM Rational actively developed Client–server Merge or lock[2] Proprietary Linux, Windows, AIX, Solaris, HP UX, i5/OS, OS/390, z/OS, Non-free $4600 per floating license (held for 30-minutes minimum per user)
Code Co-op[12] Reliable Software actively developed Distributed Merge Proprietary Windows Non-free $150 per seat
Codeville[13] Ross Cohen official site offline; latest release July 13, 2007 (2007-07-13) Distributed Merge BSD Unix-like, Windows, Mac OS X Free
CVS[14] The CVS Team [15] maintained but new features not added Client–server Merge GNU GPL Unix-like, Windows, Mac OS X Free
CVSNT[16] March Hare Software [17] and community members. maintained and new features under development Client–server Merge or lock GPL or proprietary Unix-like, Windows, Mac OS X, i5/OS Free for older version or £85 commercial license for latest version of CVS Suite or Change Management Server
darcs[18] David Roundy actively developed Distributed Merge GNU GPL Unix-like, Windows, Mac OS X Free
Fossil[19] D. Richard Hipp actively developed Distributed Merge BSD POSIX, Windows, Mac OS X, Other Free
Git[20] Junio Hamano actively developed Distributed Merge GNU GPL POSIX, Windows, Mac OS X Free
GNU arch[21] Andy Tai maintained but new features not added Distributed Merge GNU GPL Unix-like, Windows, Mac OS X Free
IC Manage[22] IC Manage Inc. actively developed Client–server Merge or lock Proprietary Unix-like, Windows, Mac OS X Non-free Commercial
LibreSource Synchronizer[23] Artenum [24] maintained and new features under development Client–server extended to "tree"[3] Merge GNU GPL[4] Unix-like, Windows, Mac OS X Free
Software Maintainer Development status Repository model Concurrency model License Platforms supported Cost
Mercurial[25] Matt Mackall actively developed Distributed Merge GNU GPL Unix-like, Windows, Mac OS X Free
MKS[26] MKS Inc actively developed Client–server Merge or lock Proprietary Unix-like, Windows Non-free
Monotone[27] Nathaniel Smith, Graydon Hoare actively developed Distributed Merge GNU GPL Unix-like, Windows, Mac OS X Free
Perforce[28] Perforce Software Inc. actively developed Client–server Merge or lock Proprietary Unix-like, Windows, Mac OS X Free for up to 2 users, and for OSS development; else $900 per seat, with volume discounts [29]
Plastic SCM [30] Codice Software [31] actively developed Distributed Merge or lock Proprietary [(Linux, Windows, Mac OS X) Non-free. Free 5-user 30 day trial licenses [32] available.[33] [5]
Rational Team Concert[34] IBM Rational actively developed Client–server Merge or lock Proprietary Linux, Windows, AIX, Solaris, HP UX, i5/OS, OS/390, z/OS, Free for up to 10 users; else non-free
StarTeam[35] Borland (Micro Focus) actively developed Client–server Merge or lock Proprietary Windows and Cross-platform via Java based client Non-free $7500 per concurrent, $2500 per fixed user.
Subversion (SVN)[36] CollabNet, Inc.[37] actively developed Client–server[6] Merge or lock[7] Apache/BSD style Unix-like, Windows, Mac OS X Free (Commercial support/services available)
SVK[38] Best Practical [39] maintenance through 2010, no new features[8] Distributed Merge Artistic/GPL Unix-like, Windows, Mac OS X Free
Team Foundation Server[40] Microsoft actively developed Client–server Merge or lock Proprietary Server: Windows Server 2003; Clients: Windows and Web included Non-free Licensed through MSDN subscription or through direct buy
Synergy[41] IBM Rational actively developed Client–server and Distributed Merge or lock Proprietary Linux, Windows, Unix-like Non-free Contact IBM Rational [42]
Vault[43] SourceGear LLC [44] actively developed Client–server Merge or lock Proprietary Unix-like, Linux, Windows Non-free $300 per user
Visual SourceSafe[45] Microsoft serious bug fixes only Shared Folder Merge or lock Proprietary Windows Non-free ~$500 per license or single license included with each MSDN subscription.
Software Maintainer Development status Repository model Concurrency model License Platforms supported Cost

Table Explanation

  • Software: The name of the application that is described.
  • Maintainer: The company or group that is currently taking responsibility for the software's maintenance or development
  • Development Status: The current status of the software project
  • Repository model: describes the relationship between various copies of the source code repository. In a client–server model, 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. In a distributed model, repositories act as peers, and users typically have a local repository with version history available, in addition to their working copies.
  • Concurrency model: describes how changes to the working copy are managed to prevent simultaneous edits from causing nonsensical data in the repository. In a lock model, changes are disallowed until the user requests and receives an exclusive lock on the file from the master repository. In a merge model, 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. Note that distributed version control almost always implies a merge concurrency model.
  • License: The license model under which the software is licensed. These can be both free and paid licenses
  • Platforms Supported: The operating systems that the software application currently supports.
  • Cost: The price of the software application

Technical information

Software Programming language History model [citation needed] Revision IDs Repository size [citation needed] Network protocols Source Code Size
AccuRev C++, Java Changeset Namespace O(revisions) custom Un­known
Bazaar Python, Pyrex, C[9] Snapshot Pseudorandom O(patch) HTTP, SFTP, FTP, custom, custom over ssh, custom over HTTP, email bundles[10], WebDAV (with plugin) 4.1 MB
BitKeeper C Un­known Un­known Un­known Un­known Un­known
ClearCase C, Java, Perl Changeset Namespace O(patch) HTTP, custom (CCFS), custom (MVFS filesystem driver) Un­known
Code Co-op C++ Changeset User ID-Ordinal O(patch) e-mail (MAPI, SMTP/POP3, Gmail), LAN Un­known
Codeville Python Un­known Un­known Un­known Un­known Un­known
CVS C Changeset Namespace O(patch) pserver [46], ssh 3.3 MB
CVSNT C++ Changeset Namespace O(patch) sspi, sserver, gserver, pserver, custom over ssh 4.4MiB
darcs Haskell Patch Namespace O(patch) HTTP, custom over ssh, email 1.7 MB
Fossil C Snapshot SHA-1 hashes O(patch) HTTP 7.2 MB
Git C, shell scripts, Perl Snapshot SHA-1 hashes O(patch) custom, custom over ssh, rsync, HTTP, email, bundles 10.2 MB
GNU arch C, shell scripts Changeset Namespace O(patch) WebDAV, HTTP Un­known
IC Manage c++, c Changeset Namespace O(patch) custom Un­known
LibreSource Synchronizer Java Changeset Timestamp of the repository O(patch) HTTP, File-System Un­known
Software Programming language History model Revision IDs Repository size Network protocols Source Code Size
Mercurial Python, C Changeset Numbers,[11] SHA-1 hashes O(patch)[12] HTTP, custom over ssh, email bundles (with standard plugin) 1.2 MB
MKS C, Java Un­known Namespace Un­known HTTP, custom Un­known
Monotone C++ Hybrid[13] SHA-1 hashes O(patch) custom (netsync), custom over ssh, file system 4.4 MB
Perforce c++, c Changeset Namespace O(patch) custom Un­known
Plastic SCM C.Java.net Changeset Namespace O(revisions) custom Un­known
Rational Team Concert Java Changeset Namespace O(patch) REST services over HTTP/HTTPS Un­known
StarTeam C, Java Snapshot MD5 hashes O(revision) custom, TCP/IP Un­known
Subversion C Changeset and Snapshot Namespace O(patch) custom (svn), custom (svn) over ssh, HTTP and SSL (using WebDAV) 5.2 MB
SVK Perl Changeset Un­known Un­known Un­known Un­known
Synergy Java Changeset (text), Snapshot(binary) Namespace O(patch) HTTP, custom over ssh, custom Un­known
Team Foundation Server C++ and C# Changeset Namespace O(patch) SOAP over HTTP or HTTPS Un­known
Vault C# Changeset ? O(patch) HTTP, HTTPS Un­known
Visual SourceSafe C Snapshot Namespace? O(changes)? SMB Un­known
Software Programming language History model[citation needed] Revision IDs Repository size[citation needed] Network protocols Source Code Size

Table Explanation

  • Software: The name of the application that is described.
  • Programming Language: The coding language in which the application is being developed
  • History model: describes the form in which changes are stored in the repository. For example, when a change is committed, a system could store a copy of the tree before and after the change (snapshot), or it might instead store a copy of the tree before the change and a changeset representing the changes.
  • 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.
  • Repository size: describes the growth-rate of the repository as changes are committed. O(patch) means that it grows as a function of the size of the microscopic change (i.e., delta or patch) between revisions, which implies some form of delta compression. O(revisions) means that it grows as the size of each revision checked in. O(Changesets) means that the repository grows with each changeset added.
  • Network protocols: lists the protocols used for synchronization of changes.
  • Source Code Size: Gives the size of the source code in megabytes.

Features

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
AccuRev Yes Yes Yes Yes Yes Yes[citation needed] Yes Yes Yes Un­known
Bazaar Yes Yes Yes Yes Yes Partial[14] Yes Yes[15] Yes Yes Yes
BitKeeper Yes Yes Un­known Un­known Un­known Un­known Yes Un­known Yes Un­known Un­known
ClearCase optional[16] Yes Yes Yes Yes Yes Yes Yes Yes Yes[17] Un­known
Code Co-op Yes Yes Yes No limited support No No No Yes Un­known Un­known
Codeville Un­known Un­known Un­known Un­known Un­known Un­known Un­known Un­known Un­known Un­known Un­known
CVS No No No No limited support No No Yes Yes Un­known No
CVSNT Yes Yes Yes[18] Yes Yes No Yes Yes Yes Yes Yes
darcs Yes Yes Yes No Yes Yes [19] No Yes No Un­known
Fossil Yes Yes Un­known No No Yes Yes No Yes Yes Un­known
Git Yes Partial[20] Yes [47] Yes Yes [48] Yes [49] Yes Yes Yes Partial[21] No
GNU arch Yes Yes Un­known Yes Yes [50] Yes Un­known Un­known Yes Un­known Un­known
IC Manage Yes Yes No Yes Yes Yes Yes Yes Yes Yes Un­known
LibreSource Synchronizer Yes Yes Yes No limited support [22] No Yes [23] No Yes Un­known Un­known
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
Mercurial Yes Yes Yes Yes[24] Yes Yes Yes Yes Yes Yes [25] No
MKS No Yes Yes No Yes Un­known No Yes Yes Un­known Un­known
Monotone Yes Yes Yes No[26] Yes [51] Yes, mandatory Yes Yes Yes Un­known Yes
Perforce Yes Yes[27] No Yes Yes Yes Yes [52] Yes Yes Yes [53] Yes [54]
Plastic SCM[28] Yes Yes Yes Yes Yes No Yes No Yes Yes Yes
Rational Team Concert Yes Yes Yes Yes Yes[29] Yes Yes Yes Yes Yes Yes
StarTeam Yes[30] Yes Un­known Yes No No Yes Yes Yes Yes Un­known
Subversion Yes Yes[31] No Yes Yes No Yes[32]. Yes Partial[33] Yes Yes
SVK Yes Yes Yes Yes Yes[34] Yes[35] Yes Yes Yes Yes Un­known
Synergy Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes[36]
Team Foundation Server Yes Yes Yes Un­known Yes Un­known Yes Un­known Yes Yes Un­known
Vault Yes Yes Yes No Yes No No Yes Yes Un­known Un­known
Visual SourceSafe No No[37] Un­known Yes (using shares)[38] Yes No No Un­known Yes Yes Un­known
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

Table Explanation

  • Software: The name of the application that is described.
  • Atomic commits: refers to a guarantee that all changes made are merged, 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 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.

Advanced features

Software RCS keyword Interactive commits external references partial checkout/clone permissions timestamp preservation supported formats
AccuRev Yes Un­known Yes Yes execution bit only Un­known Un­known
Bazaar Yes[39] Yes[40] Yes[41] No execution bit only Yes bzr, subversion[42], git[43], hg[44], any that has a fastexporter
ClearCase Yes[45] No No Yes Yes Yes N/A
CVS Yes No Yes Yes[46] Partial[47] Yes cvs
darcs No Yes No No[48] Partial[49] No darcs
Fossil No Yes No No No Un­known fossil
Git Yes[50] Yes[51] Yes[52] No[53] execution bit only No[54] git, cvs, subversion, hg, any that has a fastexporter
Mercurial Yes[55] Yes[56] Yes[57] No execution bit only No hg, subversion[58], git[59], any other format supported by the Convert extension[60]
Rational Team Concert Yes Yes Yes Yes Yes Un­known N/A
Plastic SCM No Yes Yes Yes Template:Execution Yes Template:Subversion, Perforce, CVS, Sourcesafe
SVK Un­known Yes[61] Un­known Yes Un­known Un­known subversion
Subversion Yes[62] No Yes[63] Yes Partial[64] Yes[65] subversion

Table Explanation

  • RCS keyword: Support of RCS commands
  • Interactive commits: Interactive commits allow the user to cherrypick the 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. See darcs record.
  • 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.
  • supported formats: either read/write support or read-only (conversion, potentially repeated)

Basic Commands

Software repository init clone pull push local branches checkout update add remove move copy merge commit revert generate bundle file rebase
AccuRev mkdepot No No promote mkstream mkws update add defunct move No merge keep revert No chstream
Bazaar init clone pull push create-local-branch[66] checkout update add rm mv No merge commit revert send rebase[67]
ClearCase init No No No No checkout edcs mkelem rmname mv No merge checkin uncheckout/rmver No findmerge
CVS init No No No No checkout update add rm No No update -j commit remove [then] update No No
darcs init get/put pull push N/A[68] get pull add remove move No pull / push record revert send -o[69] N/A[70]
Fossil new/open clone pull push clone/open clone/open update add rm/del mv/rename No merge commit revert Un­known Un­known
Git init / init --bare clone fetch[71] push branch clone pull add rm mv cp [then] git add[72] merge commit checkout bundle rebase
Mercurial init clone pull push bookmark[73] clone pull -u add rm mv copy merge commit revert bundle rebase [74]
Monotone init clone pull push No checkout update add drop rename No merge commit revert No No
Perforce Un­known Un­known Un­known Un­known Un­known edit sync add delete move Un­known resolve submit revert Un­known Un­known
Plastic SCM mkrep replicate replicate replicate mkbranch checkout update add remove move No merge check in revert replicate--package merge
SVK svk depotmap [or] svnadmin create) mirror pull push svk copy checkout update add rm mv cp merge commit revert No smerge -I
Subversion svnadmin create svnadmin hotcopy [work-around:] svnadmin load [work-around:] svnadmin dump No svn checkout svn update svn add svn rm svn mv svn cp svn merge svn commit svn revert No No
Software repository init clone pull push local branches checkout update add remove move copy merge commit revert generate bundle file rebase

Table Explanation

  • 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.
  • 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
  • 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

Advanced commands

Software command aliases lock/unlock shelve/unshelve rollback cherry-picking bisect incoming/outgoing grep
AccuRev No enable file locking[clarification needed] keep / co revert / purge[clarification needed] patch[clarification needed] No No No
Bazaar alias No shelve/unshelve uncommit merge (non-tracking) bisect (bisect plugin) missing --theirs-only/missing --mine-only grep (grep plugin)
Darcs No No revert/unrevert unrecord yes[75] trackdown[76] pull/push --dry-run No
Git [in '.gitconfig' file] No stash/stash pop[77] reset --hard HEAD^ cherry-pick bisect cherry grep
Mercurial [in '.hgrc' file] No shelve/unshelve (bundled extension[78]) rollback transplant (bundled extension[79]) bisect incoming/outgoing grep
Monotone [in monotonerc] No No kill_rev_locally[80] pluck bisect No No
Perforce No lock/unlock shelve/unshelve obliterate integ [55] Un­known Un­known No
Plastic SCM No check out co--lock shelve obliterate Yes No No No
SVK No No No No svk merge No status[81] No
Subversion No svn lock/unlock No No svnmerge cherry-picking yes[82] status -u[83] No
Surround SCM No sscm checkin/checkout No sscm rollback No No sscm diffreport No
Team Foundation Server Un­known [missing command name] [missing command name] Un­known Un­known Un­known Un­known Un­known
Software command aliases lock/unlock shelve (stash)/unshelve rollback cherry-picking bisect incoming/outgoing grep

Table Explanation

  • 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.
  • 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 a change
  • 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

User interfaces

Software Web interfaces Stand-alone GUIs Integration and/or Plug-ins for IDEs
AccuRev Yes Windows (incl. explorer integration), Linux, Unix, Mac OS X, BeOS available IDEA (AccuRev4IDEA), Eclipse, Visual Studio
Bazaar can use a plain webserver, webserve, loggerhead or Trac Olive, bzr-gtk (GTK+), Bazaar Explorer (Qt), QBzr (Qt), TortoiseBzr (Windows) Eclipse (BzrEclipse, QBzrEclipse), Visual Studio (bzr-visualstudio), TextMate (TextMateBundle), Komodo IDE
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?), IDEA (standard?, 1, 2)
Code Co-op Not necessary since entire project is replicated locally Windows ?
CVS cvsweb, ViewVC, codeBeamer, others TortoiseCVS (Windows Explorer), WinCVS, Mac OS X, GTK, Qt available Eclipse (Team), KDevelop (standard), IDEA (standard), Emacs (standard VC), Komodo IDE, BBEdit
CVSNT cvsweb, ViewVC, others Windows, Mac OS X, OS/400, GTK, Qt available All those that support CVS, plus commercial plugins for SCCI, Bugzilla, Build
darcs darcs.cgi included; darcsweb, Trac under development; TortoiseDarcs (Windows Explorer), Mac OS X (alpha), Eclipse (eclipsedarcs), Emacs (vc-darcs.el)
Git gitweb, wit, cgit, GitHub, gitorious, Trac, codeBeamer gitk, git-gui (Tcl/Tk), tig, TortoiseGit, qgit, gitg (GNOME/GTK), (h)gct (Qt), git-cola (Qt), Git Extensions (Windows Explorer) Eclipse (JGit/EGit); Netbeans (NbGit); Visual Studio (Git Extensions); Emacs (extension for standard VC); TextMate (Git TextMate Bundle); Vim (VCSCommand plugin); IntelliJ IDEA >8.1 (standard feature); Komodo IDE; Anjuta
GNU arch ArchZoom ArchWay (GTK2), TlaLog Emacs (standard VC)
IC Manage included Windows, Linux, Unix, Mac OS X Emacs, Cadence Design Framwork, Synopsys Custom Designer
LibreSource Synchronizer LibreSource Windows, Linux, Unix, Mac OS X available [84] ?
Mercurial included [85], Bitbucket, Trac, codeBeamer Hgk (Tcl/Tk), (h)gct (Qt), TortoiseHg (Windows Explorer, Nautilus), MacMercurial (MacOS X 10.4 and newer) Eclipse (Mercurial Eclipse), NetBeans ([56]), Visual Studio 2008 ([57]), Emacs, Vim (VCSCommand plugin), Komodo IDE
Monotone ViewMTN, TracMonotone, Monotone-Viz (GTK+), Guitone (Qt), Monotone Browser (GTK+, Perl) ?
Perforce included, P4Web, P4FTP Windows, Linux, Unix, Mac OS X, BeOS available Eclipse, Visual Studio (P4SCC), KDevelop (standard?), IDEA (standard?), Komodo IDE, BBEdit, Emacs
Plastic SCM No Windows, Linux, Mac OS X, Eclipse, Visual Studio,IntelliJ, LDAP, Rally, Version One, Jira, Bugzilla, Mantis, OnTime, FogBugZ, Final Builder, Pulse, Office 2003/2007.
Rational Team Concert Yes Eclipse-based GUI Eclipse integration; MS Visual Studio integration
StarTeam included Windows, Java, Eclipse, Visual Studio, BDS2006 integration, plus Java command-line Visual Studio, JBuilder, Eclipse
Subversion Apache 2 module included, WebSVN, ViewSVN, ViewVC, Trac, SharpForge, sventon, Warehouse, codeBeamer Java, KDESVN, Mac OS X [58] (including Finder integration), Nautilus, Qt, RabbitVCS, TortoiseSVN (Windows Explorer) Anjuta, BBEdit, Eclipse (Subclipse, Emacs (standard VC), IDEA (standard), KDevelop (standard), Komodo IDE, MonoDevelop (standard), Netbeans, RabbitVCS (for GEdit), Subversive), TextMate SVNMate plugin), Visual Studio (AnkhSVN, VisualSVN)
Synergy via Telelogic Change interface Windows (incl. explorer integration), Linux, Unix Eclipse (Telelogic proprietary), Visual Studio (Telelogic proprietary), IDEA (Telelogic proprietary)
Team Foundation Server included (Sharepoint Server used for web services) Windows included; MacOS, Unix available Visual Studio. Java client for Eclipse IDE and IntelliJ
Vault included Windows, Unix-like, Mac OS X Visual Studio 2003 and higher, Eclipse 3.2 and higher
Visual SourceSafe none included; SSWI, VSS Remoting Windows included; Linux, Mac OS and Solaris using SourceOffSite; any Java VM using SourceAnyWhere for VSS Visual Studio, IDEA (standard?)
Software Web interfaces Stand-alone GUIs Integration and/or plug-ins for IDEs

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: functionality is available through an Integrated Development Environment. Minimum functionality should be to list the revision state of a file and check in/check out files.

History and adoption

Software History Notable users
AccuRev 2002 First publicly released in 2002 Clients include: SanDisk, Sony, Orbitz, MCI, and Polycom[citation needed]
Bazaar Loosely related to baz Ubuntu, Launchpad, KatchTV [59], MySQL, GRUB2, Bugzilla, GNU Emacs
BitKeeper Evolved from Sun WorkShop TeamWare Linux Kernel (2002–2005) and many companies [60]
ClearCase 1990 Developed beginning in 1990 by Atria Software, following concepts developed by Apollo Computer in DSEE during the 1980s. The most recent version is 7.1.1, released in Dec 2009. IBM, Alcatel-Lucent, Cisco, Motorola, Siemens, Ericsson, Nokia and other large organizations worldwide[citation needed]
Code Co-op 1997 The first distributed VCS, demoed in 1997 [61], released soon after. Clients include: Logitech, HP, Ericsson[citation needed]
CVS 1986 First publicly released July 3, 1986; based on RCS thousands of organizations worldwide[citation needed]
CVSNT 1998 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. ?
darcs 2003 First announced on April 9, 2003 GHC, Mnet, xmonad, Projects Using Darcs
Fossil 2007 Fossil and SQLite have used Fossil since 21 July 2007. SQLite, Fossil
Git 2005 Started by Linus Torvalds in April 2005, following the BitKeeper controversy.[86] Linux kernel, GNOME, Perl 5 [62], X.Org, Cairo, Qt Software, Samba, OpenEmbedded, Ruby on Rails, Wine, Fluxbox, Openbox, Compiz Fusion, XCB, ELinks, XMMS2, e2fsprogs, GNU Core Utilities, DokuWiki (Also see list of Git projects)
GNU arch 2005 Started by Tom Lord, it later became part of the GNU project. Lord resigned as maintainer in August 2005. available for GNU Savannah and Gna.org projects
IC Manage 2003 Developed by IC Manage, Inc which was founded in 2003 by Shiv Sikand and Dean Drako. many organizations worldwide [63]
LibreSource Synchronizer 2005 First publicly released on June 13, 2005 Most of the LibreSource Community
Mercurial 2005 Started April 6, 2005 by Matt Mackall, following the BitKeeper controversy.[86] First released on April 19, 2005 Mozilla, NetBeans, Xine, Xen, OpenJDK, OpenOffice.org, OpenSolaris, wmii, MoinMoin, Linux-HA, Python[87] (Also see list of projects using Mercurial)
Monotone 2003 First released in April 2003 CTWM, Pidgin, Xaraya [64]
Perforce 1993 Developed by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald. many organizations worldwide [65], FreeBSD[66]
Plastic SCM 2002 Founded in 2005. Last release (Plastic SCM 3.0)in 2010. Clients include: HP, Vicarious Vision, DHL, L´Unique, and many others organizations worldwide.
Rational Team Concert 2008 Version 1.0 released on June, 2008 IBM
Revision Control System 1985 July 1985 RCS is generally (but not always) superseded by other systems such as CVS, which began as a wrapper on top of RCS.
Source Code Control System 1972 as the POSIX source-control tool, SCCS is widely available on UNIX platforms. Sun WorkShop TeamWare uses SCCS files.
StarTeam 1995 Version 1.0 1995 [67]; Developed by StarBase software, acquired by Borland(which was acquired by Micro Focus). Borland, BT, Cintas, EDS, Kaiser Permanente, Met Office, Quest Software, Raymond James, Siemens, and many more globally distributed companies [68]
Subversion 2000 Started in 2000 by CVS developers with goal of replacing CVS ASF, SourceForge, FreeBSD, Google Code, KDE, GCC, Ruby, Mono, PuTTY, Zope, Xiph, GnuPG, CUPS, Wireshark, TWiki, Django, аvailable on CodePlex, and many organizations worldwide [69]
SVK 2003 Authored by Chia-liang Kao with Audrey Tang. First version was on November 19, 2003. 1.00 on May 9, 2005. 2.0.0 on Dec 28th, 2006. SVK became a product of Best Practical on June 5, 2006. Request Tracker
Synergy 1988 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. General Motors, BMW, Chrysler, Nokia, Philips, Raytheon, Morgan Stanley, Friends Provident, Boeing, Lockheed Martin, Siemens and other small, medium and large organizations worldwide[citation needed]
Team Foundation Server 2006 First publicly released on March, 2006 Available on CodePlex, Microsoft itself and other large organizations worldwide[citation needed]
Vault 2003 First publicly released in February, 2003 ?
Visual SourceSafe 1995 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 users

Table Explanation

  • Software: The name of the application that is described.
  • Notable 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.
  • History: briefly describes the software's origins and development.

See also

References

  1. ^ Bazaar is a Distributed version control system but it can also be used in a centralized manner using lock step development and checkouts.
  2. ^ In 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.
  3. ^ "a workspace can be synchronized with more than one LibreSource Synchronizer. As a limitation, the network must have tree topology." says LibreSource Synchronizer.
  4. ^ As of version 2.5, "LibreSource is now released under GPL Version 2".
  5. ^ Plastic SCM Pricing [1]
  6. ^ SVK allows Subversion to have Distributed branches.
  7. ^ In Subversion, a file attribute enables the lock model on per-file basis. This file attribute can be set automatically using file name wildcard expressions.
  8. ^ "The Future of SVK". May 28, 2009. Retrieved June 6, 2009.
  9. ^ Bazaar'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.
  10. ^ A Bazaar bundle is a summary diff, with sufficient extra information to preserve history.
  11. ^ Mercurial revision numbers are local to a repository; they can differ from repository to repository depending on in which order merges are performed.
  12. ^ "Mercurial 0.5b vs git". overview of performance/scalability. Retrieved 2006-12-05.
  13. ^ A 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.
  14. ^ They can be automatically generated [2] and manually verified, but verification is not automatic
  15. ^ EOL conversions are supported since bzr 1.14
  16. ^ ClearCase 7.1.1 release notes
  17. ^ Support Policy for National Languages and ClearCase
  18. ^ [3]
  19. ^ darcs' patches each bear a unique identifier, impossible to merge twice the same patch in a repository (without destructively modifying history using "unsafe" commands).
  20. ^ Git does not explicitly track renames. Renames are detected after the fact, if the file content does not change dramatically.
  21. ^ Git itself is not internationalized, just git-gui and gitk (both are shipped with git).
  22. ^ Its possible to embed the action in a shell or Ant script.
  23. ^ A merged is tracked by its workspace origin.
  24. ^ Mercurial versions 0.9.4 and higher support symlinks.
  25. ^ Mercurial is in the process of being translated to at least dutch and chinese
  26. ^ It could be done via user level hooks
  27. ^ Perforce Knowledge Base: Renaming Files
  28. ^ What makes Plastic SCM different? [4]
  29. ^ Through the procees behaviour components: Operation advisors and Operation participants. http://jazz.net/library/article/292
  30. ^ StarTeam supports atomic commits as of version 2006
  31. ^ 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 such as svk. Also, a rename operation is actually a copy-with-history-and-delete sequence.
  32. ^ New to SVN 1.5 ([5]). A separate tool "svnmerge" ([6]) provides merge tracking for older versions.
  33. ^ 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 [7] 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.
  34. ^ Uses subversion server
  35. ^ Signature - SVK Wiki
  36. ^ in Asian releases, v6.6a to v7.1a
  37. ^ Version change history is removed upon rename; old name not referenced.
  38. ^ Note that VSS Shares do not support anything like actual Unix symbolic links
  39. ^ Bazaar keywords plugin
  40. ^ Bazaar interactive plugin
  41. ^ Bazaar Externals plugin
  42. ^ bzr-svn
  43. ^ bzr-git
  44. ^ bzr-hg
  45. ^ IBM Rational ClearCase: The ten best triggers
  46. ^ Using alias of the CVSROOT/modules file.
  47. ^ CVS records executable bit when a file is added, but does not allow changing it later on.
  48. ^ Darcs can do sparse checkouts from explicit checkpoints on darcs-1 repositories, but not from darcs-2 ones[citation needed]
  49. ^ Darcs can automatically detect #! scripts and make them executable on checkout.
  50. ^ The Git FAQ states that keyword expansion is not a good thing
  51. ^ add -i and add -p, see git-add(1) Manual Page
  52. ^ git-submodule(1) Manual Page
  53. ^ The Git Community Handbook clearly explains that "Git does not allow partial checkouts"
  54. ^ The Git FAQ explains why preserving modification time is considered harmful
  55. ^ Mercurial KeywordExtension page
  56. ^ Mercurial RecordExtension page
  57. ^ hgforest repository
  58. ^ hgsubversion page
  59. ^ Hg-Git Mercurial Plugin
  60. ^ Mercurial ConvertExtension page
  61. ^ commit --interactive, see SVK::Command::Commit
  62. ^ Keyword Substitution
  63. ^ Externals Definitions
  64. ^ SVN records file permissions when a file is added, but does not allow changing them later on.
  65. ^ Disabled by default.
  66. ^ bzr-local-branches plugin
  67. ^ rebase plugin
  68. ^ darcs doesn't have named branches, local or not, branching is handled solely through repository cloning
  69. ^ darcs send prepares a bundle of patches, defaults to sending it by mail but can send it to a file instead
  70. ^ darcs' patch-based model doesn't distinguish between merge and rebase -- both are the same operation
  71. ^ pull is fetch plus merge.
  72. ^ copies are detected after the fact, much like renames
  73. ^ Mercurial Bookmarks are similar to local branches, with some limitations.
  74. ^ Mercurial rebase extension project's page
  75. ^ darcs operate on patches not revision, cherrypicking simply consists in pulling a given patch from one repository to another one as long as the dependencies are fulfilled
  76. ^ trackdown performs an automated search by repeatedly running a provided command on previous revisions on the working copy until the command succeeds (doesn't return an error code)
  77. ^ git stash is a multi-level shelve, it's possible to shelve several change groups at the same time
  78. ^ Mercurial Shelve extension page
  79. ^ Mercurial Transplant extension page
  80. ^ Only works on a local repository and only on revisions without children. The disapprove command might be an alternative.
  81. ^ svk status lists differences between working copy and repository, not differences between two repositories
  82. ^ Using the free third-party tool svn-bisect
  83. ^ svn status lists differences between working copy and repository, not differences between two repositories
  84. ^ Any OS that support a Java Virtual Machine 1.5
  85. ^ hgweb for single-repository access and hgwebdir for multiple repository access from a single HTTP address
  86. ^ a b Towards A Better SCM: Revlogs and Mercurial, presented by Matt Mackall to the Ottawa Linux Symposium, July 2006
  87. ^ transition ongoing