www.fgks.org   »   [go: up one dir, main page]

Jump to content

Comparison of version-control software: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Line 1,668: Line 1,668:
! {{rh}} | [[Git (software)|Git]]
! {{rh}} | [[Git (software)|Git]]
| style="text-align: left; padding-left: 0.5em" | Started by [[Linus Torvalds]] in April 2005, following the [[BitKeeper]] controversy.<ref name=bkcontroversy>[http://www.linuxsymposium.org/2006/view_abstract.php?content_key=194 Towards A Better SCM: Revlogs and Mercurial], presented by Matt Mackall to the Ottawa Linux Symposium, July 2006</ref>
| style="text-align: left; padding-left: 0.5em" | Started by [[Linus Torvalds]] in April 2005, following the [[BitKeeper]] controversy.<ref name=bkcontroversy>[http://www.linuxsymposium.org/2006/view_abstract.php?content_key=194 Towards A Better SCM: Revlogs and Mercurial], presented by Matt Mackall to the Ottawa Linux Symposium, July 2006</ref>
| style="text-align: left; padding-left: 0.5em" | [[Linux kernel]], [[Perl|Perl 5]] [http://dev.perl.org/perl5/source.html], [[X.Org Server|X.Org]], [[Cairo (graphics)|Cairo]], [[Qt Software]], [[Samba software|Samba]], [[OpenEmbedded]], [[Ruby on Rails]], [[Wine (software)|Wine]], [[Fluxbox]], [[Openbox]], [[Compiz Fusion]], [[XCB]], [[ELinks]], [[XMMS2]], [[e2fsprogs]], [[GNU Core Utilities]] (Also see [http://git.or.cz/gitwiki/GitProjects list of Git projects])
| style="text-align: left; padding-left: 0.5em" | [[Linux kernel]], [[GNOME]], [[Perl|Perl 5]] [http://dev.perl.org/perl5/source.html], [[X.Org Server|X.Org]], [[Cairo (graphics)|Cairo]], [[Qt Software]], [[Samba software|Samba]], [[OpenEmbedded]], [[Ruby on Rails]], [[Wine (software)|Wine]], [[Fluxbox]], [[Openbox]], [[Compiz Fusion]], [[XCB]], [[ELinks]], [[XMMS2]], [[e2fsprogs]], [[GNU Core Utilities]] (Also see [http://git.or.cz/gitwiki/GitProjects list of Git projects])
|-
|-
! {{rh}} | [[GNU arch]]
! {{rh}} | [[GNU arch]]
Line 1,716: Line 1,716:
! {{rh}} | [[Subversion (software)|Subversion]]
! {{rh}} | [[Subversion (software)|Subversion]]
| style="text-align: left; padding-left: 0.5em" | Started in 2000 by [[Concurrent Versions System|CVS]] developers with goal of replacing CVS
| style="text-align: left; padding-left: 0.5em" | Started in 2000 by [[Concurrent Versions System|CVS]] developers with goal of replacing CVS
| style="text-align: left; padding-left: 0.5em" | [[Apache Software Foundation|ASF]], [[SourceForge]], [[FreeBSD]], [[Google Code]], [[KDE]], [[GNOME]], [[GNU Compiler Collection|GCC]], [[Ruby (programming language)|Ruby]], [[Python (programming language)|Python]], [[Mono (software)|Mono]], [[PuTTY]], [[Zope]], [[Xiph.Org Foundation|Xiph]], [[GNU Privacy Guard|GnuPG]], [[Common Unix Printing System|CUPS]], [[Wireshark]], [[TWiki]], [[Django (web framework)|Django]], and many organizations worldwide [http://subversion.tigris.org/testimonials.html]
| style="text-align: left; padding-left: 0.5em" | [[Apache Software Foundation|ASF]], [[SourceForge]], [[FreeBSD]], [[Google Code]], [[KDE]], [[GNU Compiler Collection|GCC]], [[Ruby (programming language)|Ruby]], [[Python (programming language)|Python]], [[Mono (software)|Mono]], [[PuTTY]], [[Zope]], [[Xiph.Org Foundation|Xiph]], [[GNU Privacy Guard|GnuPG]], [[Common Unix Printing System|CUPS]], [[Wireshark]], [[TWiki]], [[Django (web framework)|Django]], and many organizations worldwide [http://subversion.tigris.org/testimonials.html]
|-
|-
! {{rh}} | [[Surround SCM]]
! {{rh}} | [[Surround SCM]]

Revision as of 08:32, 20 March 2009

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 [6] AccuRev, Inc. actively developed Client-server Merge or lock Proprietary Any Java Platform (Unix-like, Windows, Mac OS X) $1495 (enterprise) for each license, free 5-user 30 day trial licenses available
Aldon [7] Aldon actively developed Client-server Merge or lock Proprietary Linux, Windows, i5/OS Unspecified
Alienbrain[8] Avid Technology, Inc. actively developed Client-server Merge or lock Proprietary Linux, Windows, Mac OS X $495/$895/$1,495 for each licence (programmer/artists/advance), free 2 seats unlimited trial.
AllChange[9] Intasoft Ltd actively developed Client-server Merge or Lock Proprietary Windows $1000 per named license or $2000 per concurrent licence.
CA Software Change Manager[10] CA, Inc.[11] actively developed Client-server Merge or Lock Proprietary Linux, Windows, i5/OS Named and Concurrent Seat Licenses available with Volume Discounts Available
AVS - Advanced Versioning System[12] QArks[13] actively developed Client-server Merge or Lock GPL Any Java Platform (Unix-like, Windows, Mac OS X) Free, commercial support available
Bazaar[14] Canonical Ltd. actively developed Distributed[1] Merge GPL Unix-like, Windows, Mac OS X Free
BitKeeper[15] BitMover Inc. actively developed Distributed Merge Proprietary Unix-like, Windows, Mac OS X Quoted on an individual basis.
ClearCase[16] IBM Rational actively developed Client-server Merge or lock[2] Proprietary Unix-like, Windows, AIX, HP UX, i5/OS, OS/390, z/OS, $4600 per floating license (held for 30-minutes minimum per user) before tax, volume discounts [17]
Code Co-op[18] Reliable Software actively developed Distributed Merge Proprietary Windows $150 per seat
Codeville[19] Ross Cohen actively developed Distributed Merge BSD Unix-like, Windows, Mac OS X Free
CVS[20] The CVS Team [21] maintained but new features not added Client-server Merge GPL Unix-like, Windows, Mac OS X Free
CVSNT[22] March Hare Software[23] 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 or commercial
darcs[24] David Roundy actively developed Distributed Merge GPL Unix-like, Windows, Mac OS X Free
DesignSync[25] ENOVIA MatrixOne actively developed Client-server Merge or Lock Proprietary Unix, Linux, Windows, HPUX $3500 for each user
CA Endevor Software Change Manager[26] CA, Inc.[27] actively developed Client-server Merge or Lock Proprietary Mainframe, zOS Standard mainframe software licence based on capacity or number of users
FileHamster[28] Mogware Inc.[29] actively developed Realtime backup Local Proprietary Windows Free
Git[30] Junio Hamano actively developed Distributed Merge GPL POSIX, Windows, Mac OS X Free
GNU arch[31] Andy Tai maintained but new features not added Distributed Merge GPL Unix-like, Windows, Mac OS X Free
LibreSource Synchronizer[32] Artenum[33] maintained and new features under development Client-server Merge GPL[3] Unix-like, Windows, Mac OS X Free
Mercurial[34] Matt Mackall actively developed Distributed Merge GPL Unix-like, Windows, Mac OS X Free
MKS[35] John Heathrow and David Artisan actively developed Client-server Lock Proprietary Unix-like, Windows Aggregated usage formula, from $999 to $100,000 USD
Mogware[36] Mogware Inc. actively developed Client-server Sandbox, Merge or Lock Proprietary Windows Free for up to 4 users, and for OSS development; else $799 per seat, with volume discounts[37]
Monotone[38] Nathaniel Smith, Graydon Hoare actively developed Distributed Merge GPL Unix-like, Windows, Mac OS X Free
Perforce[39] 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[40]
PlasticSCM[41] Codice Software[42] actively developed Client-server/Distributed Merge Proprietary Unix-like, Windows, Mac OS X $500 per seat, with volume discounts, free 5-user 30 day trial licenses available [43]
PureCM[44] PureCM.com Ltd actively developed Client-server Merge or Lock Proprietary Unix-like, Windows, Mac OS X Free for up to 2 users. $1,000 for 5 users [45]
Razor[46] Visible Systems actively developed Client-server Merge or lock Proprietary Unix, Linux,Windows,Mac OS X $800–1,000 for each concurrent licence
SourceAnywhere Hosted[47] Dynamsoft[48] actively supported Client-server Merge or Lock Proprietary A SaaS application; Clients: Windows and Cross-platform via Java based client Has Free Plan and other Plans [49]
SourceHaven[50] Veterisoft, Inc.[51] actively supported Client-server ? Proprietary Unix-like, Windows, Mac OS X $295 per seat with volume discounts
StarTeam[52] Borland actively developed Client-server Merge or lock Proprietary Windows and Cross-platform via Java based client $7500 per concurrent, $2500 per fixed user. Contact Borland[53]
Subversion (SVN)[54] CollabNet, Inc.[55] actively developed Client-server[4] Merge or lock[5] Apache/BSD style Unix-like, Windows, Mac OS X Free (Commercial support/services available)
Surround SCM[56] Seapine Software[57] actively developed Client-server Merge or lock Proprietary Unix-like, Windows, Mac OS X Commercial
SVK[58] Best Practical[59] actively developed Distributed Merge Artistic/GPL Unix-like, Windows, Mac OS X Free
Team Foundation Server[60] Microsoft actively developed Client-server Lock or merge Proprietary Server: Windows Server 2003; Clients: Windows and Web included Licensed through MSDN subscription or through direct buy[61]
Telelogic Synergy[62] Telelogic (IBM) actively developed Client-server and Distributed Merge or Lock Proprietary Linux, Windows, Unix-like Contact Telelogic [63]
Vault[64] SourceGear LLC[65] actively developed Client-server Lock or Merge Proprietary Unix-like, Linux, Windows $249 per user
Visual SourceSafe[66] Microsoft serious bug fixes only Client-server Lock or merge Proprietary Windows ~$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.
  • Licence: The licence model under which the software is licensed. These can be both free and paid licences
  • 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 Revision IDs Repository size Network protocols
AccuRev C++, Java Changeset Namespace O(revisions) custom
Aldon C++, Java Snapshot Namespace O(revisions) custom
Alienbrain C++, Java, DHTML Changeset Namespace O(revisions) custom, HTTP, HTTPS
AllChange C, C++, Java, HTML Changeset Namespace O(patch) TCPIP,HTTP,HTTPS
CA Software Change Manager C, C++, Java, HTML Changeset and Snapshot Namespace O(patch) HTTP, custom (TCP)
AVS Java Changeset Sequence O(revisions) HTTP, HTTPS
Bazaar Python, Pyrex, C[6] Snapshot Pseudorandom O(patch) HTTP, SFTP, FTP, custom, custom over ssh, email bundles[7], WebDAV (with plugin)
ClearCase C Changeset Namespace O(patch) HTTP, custom (CCFS), custom (MVFS filesystem driver)
Code Co-op C++ Changeset User ID-Ordinal O(patch) e-mail (MAPI, SMTP/POP3, Gmail), LAN
CVS C Changeset Namespace O(patch) pserver[67], ssh
CVSNT C++ Changeset Namespace O(patch) sspi, sserver, gserver, pserver, custom over ssh
darcs Haskell Patch Namespace O(patch) HTTP, custom over ssh, email
DesignSync C++, Java Changeset Namespace O(patch) HTTP, HTTPS
Git C, shell scripts Snapshot SHA-1 hashes O(patch) custom, custom over ssh, rsync, HTTP, email, bundles
GNU arch C, shell scripts Changeset Namespace O(patch) WebDAV, HTTP
LibreSource Synchronizer Java Changeset Timestamp of the repository O(patch) HTTP, File-System
Mercurial Python, C Changeset Numbers,[8] SHA-1 hashes O(patch)[9] HTTP, custom over ssh, email bundles (with standard plugin)
Monotone C++ Hybrid[10] SHA-1 hashes O(patch) custom (netsync), custom over ssh, file system
Perforce c++, c Changeset Namespace O(patch) custom
Plastic SCM C/C++, C#, Java Changeset Namespace O(revision) TCP IP / SSL
PureCM C++, C#, Java Changeset Namespace O(patch) TCP/IP, SSL
Razor C, C++ Changeset (text), Snapshot(binary) Sequential numbers Binary(revision, Text(patch) TCPIP
SourceAnywhere Hosted C++, Java Changeset Namespace O(patch) TCP/IP
SourceHaven C, Java Snapshot Namespace O(patch) WebDAV, custom
StarTeam C, Java Snapshot MD5 hashes O(revision) custom, TCP/IP
Subversion C Changeset and Snapshot Namespace O(patch) custom (svn), custom (svn) over ssh, HTTP and SSL (using WebDAV)
Surround SCM C++ Changeset Namespace O(patch) custom
SVK Perl Changeset ? ? ?
Synergy Java Changeset (text), Snapshot(binary) Namespace O(patch) HTTP, custom over ssh, custom
Team Foundation Server C++ and C# Changeset Namespace O(patch) SOAP over HTTP or HTTPS
Vault C# Changeset ? O(patch) HTTP, HTTPS
Visual SourceSafe C Snapshot Namespace? O(changes)? None, but can access repository files through a "share"
Software Programming language History model Revision IDs Repository size Network protocols

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).
  • Repository size: describes the growth-rate of the repository as changes are committed. O(patch) means that it grows as the size of the patches between revisions, while O(revisions) means that it grows as the size of each revision checked in.
  • Network protocols: lists the protocols used for synchronization of changes.

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
AccuRev Yes Yes Yes Yes Yes Yes[citation needed] Yes Yes N/A Yes
Aldon Yes Yes ? Yes Yes Yes Yes ? ? ?
Alienbrain Yes Yes ? ? Yes ? Yes ? Yes Yes
AllChange Yes Yes No No Yes No Yes Yes Yes ?
CA Software Change Manager Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Bazaar Yes Yes Yes Yes Yes Partial[11] Yes No Yes Yes
ClearCase No Yes Yes Yes Yes Yes Yes Yes Yes Yes[12]
Code Co-op Yes Yes Yes No limited support No No No Yes ?
CVS No No No No limited support No No Yes Yes ?
CVSNT Yes Yes ? Yes Yes No Yes Yes Yes Yes[13]
darcs Yes Yes Yes No Yes Yes N/A[14] ? Yes ?
DesignSync Partial[15] Yes Yes Yes Yes No Yes Yes Yes No
Git Yes Yes (implicit) Yes [68] Yes Yes [69] Yes [70] Yes Yes Yes Partial[16]
GNU arch Yes Yes ? Yes Yes [71] Yes ? ? Yes ?
LibreSource Synchronizer Yes Yes Yes No limited support [17] No Yes [18] No Yes ?
Mercurial Yes Yes Yes Yes[19] Yes Yes Yes Yes Yes Yes [20]
Monotone Yes Yes Yes No[21] Yes [72] Yes, mandatory Yes No Yes ?
Perforce Yes Yes[22] No Yes Yes Yes Yes [73] Yes Yes Yes [74]
Plastic SCM Yes Yes Yes Yes Yes Yes Yes ? Yes ?
PureCM Yes Yes Yes Yes Yes No Yes Yes Yes Yes
Razor Yes Yes Yes No Yes Yes Yes Yes Yes No
SourceAnywhere Hosted Yes Yes No ? Yes No No Yes Yes Yes
SourceHaven Yes Yes ? Yes Yes No ? ? ? ?
StarTeam Yes[23] Yes ? Yes No No Yes Yes Yes Yes
Subversion Yes Yes[24] No Yes Yes No Yes[25]. Yes Partial[26] Yes
Surround SCM Yes Yes Yes No Yes No Yes Yes Yes Yes
SVK Yes Yes Yes Yes Yes[27] Yes[28] Yes Yes Yes Yes
Synergy Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Team Foundation Server Yes Yes Yes ? Yes ? Yes ? Yes Yes
Vault Yes Yes Yes No Yes No No Yes Yes ?
Visual SourceSafe No Yes ? Yes (using shares)[29] Yes No No ? Yes Yes
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

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.
  • International Support: Indicates if the software has support for multiple language environments and operating system

Advanced Features

Software RCS keyword Interactive commits[30] external references[31] partial checkout/clone sparse directory checkout/clone[clarification needed] permission keeping timestamp keeping[clarification needed] supported formats[32]
AccuRev Yes ?[citation needed] Yes[citation needed] Yes Yes ?[citation needed] Yes n/a
Bazaar No ? No No No execution bit only Yes bzr, subversion(bzr-svn plugin), git(bzr-git plugin)
CVS Yes No ? Yes Yes[33] ? ? cvs
Darcs No Yes No ? no[34] ? ? darcs
Git yes, but not recommended[35] add --interactive[36] Yes[37] No No execution bit only No git, cvs, subversion, any that has a fastexporter
Mercurial bundled Keyword extension[38], although not recommended[39] bundled Record extension[40] via Forest extension[41] No No execution bit only ? hg, svn[42], any other format supported by the Convert extension[43]
SVK ? commit --interactive[citation needed] ? ? ? ? ? subversion
Subversion Yes[44] No Yes[45] Yes Yes Partial[46] Partial[47] subversion

Table explanation

  • RCS keyword: Support of RCS commands
  • partial checkout/clone: Ability to checkout or clone only a specified subdirectory from a repository.
  • permission keeping: Tracks file permission bits in the revision history.
  • timestamp keeping: Records per-file timestamps in the revision history.

Basic Commands

Software create a working copy repository init[clarification needed] clone[clarification needed] pull push local branches[48] checkout[clarification needed] update[clarification needed] add[49] remove move copy merge commit revert[clarification needed] generate bundle file rebase
AccuRev mkdepot mkdepot mkstream mkstream) mkws / co update / populate add defunct move / rename No merge keep / promote revert No chstream
Bazaar init init-repository / init-repo branch / clone / get pull push create-local-branch, list-local-branches, remove-local-branch (bzr-local-branches plugin) checkout / co update / up add remove / rm move / mv / rename No merge commit / ci / checkin revert send rebase (rebase plugin)
CVS tag -b init No No No No checkout / co / get update / up add remove / rm No No update -j commit / ci remove+update No No
Darcs init ? get pull push no[50] ? ? add remove move No pull / push record revert send -o[51] not applicable
Git init init --bare clone pull push branch No No add rm mv No merge commit revert bundle rebase
Mercurial init ? clone pull push yes (bundled extension[52]) No No add remove / rm rename / mv copy merge commit revert bundle rebase (Rebase extension[53])
SVK ? (svnadmin create) mirror pull push No No No add delete / del / remove / rm move / mv / rename / ren copy / cp merge commit / ci revert ? ?
SVN mkdir+svn add svnadmin create svn copy / cp (in same repository only) No No No svn checkout / co svn update / up svn add svn delete / del / remove / rm svn move / mv / rename / ren svn copy / cp svnmerge merge svn commit / ci svn revert No ?
Software branch init with/without repository repository init clone pull push local branches checkout update add remove move copy merge commit revert generate bundle file rebase

Advanced Commands

Software command aliases[54] lock/unlock[55] shelve/unshelve[56] rollback[57] cherry-picking[58] bisect[59] incoming/outgoing[60] grep[61]
AccuRev No enable file locking[clarification needed] keep / co revert / purge[clarification needed] patch[clarification needed] No No No
Bazaar alias No shelve/unshelve ? merge (non-tracking) bisect (bisect plugin) missing --theirs-only/missing --mine-only No
Darcs No No No unrecord yes[62] trackdown[63] ? ?
Git in '.gitconfig' file No stash/stash pop[64] reset --hard HEAD^ cherry-pick bisect ? grep
Mercurial in '.hgrc' file No shelve/unshelve (bundled extension[65]) rollback transplant (bundled extension[66]) bisect incoming/outgoing grep
SVK No No No ? No No ? ?
SVN No svn lock/unlock No No svnmerge cherry-picking ? st -u[67] ?
Software command aliases lock/unlock shelve (stash)/unshelve rollback cherry-picking bisect incoming/outgoing grep

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
Aldon Yes Windows ?
Alienbrain No Windows, Linux, Mac OS X available Visual Studio, Adobe Photoshop, Autodesk Maya, Softimage XSI, 3ds Max
AllChange included Windows (incl. explorer integration) Eclipse, All that support SCCI (e.g.Visual Studio), DOORS, Dreamweaver, Test Director
CA Software Change Manager included Windows (incl. explorer integration), Linux, Unix Eclipse, Visual Studio
Bazaar can use a plain webserver, webserve, loggerhead or Trac Olive, bzr-gtk (GTK+), QBzr (Qt), TortoiseBZR (Windows) Eclipse (BzrEclipse), Visual Studio (bzr-visualstudio), TextMate (TextMateBundle)
ClearCase included, Clearcase Web Interface MS Windows native, Motif-based GUI for Unix-like systems, TSO client for z/OS. Full command-line for both UNIX and MS Windows. 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, others TortoiseCVS (Windows Explorer), WinCVS, Mac OS X, GTK, Qt available Eclipse (Team), KDevelop (standard), IDEA (standard), Emacs (standard VC)
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) available Eclipse (eclipsedarcs)
DesignSync Yes, Apache included Unix, Linux, Windows, HPUX Visual Studio 2003/2005
Git gitweb, wit, cgit, GitHub, gitorious, Trac gitk, git-gui (Tcl/Tk), tig, qgit. GTK, (h)gct (Qt) available Eclipse (JGit/EGit); Emacs (extension for standard VC); TextMate (Git TextMate Bundle); Vim (VCSCommand plugin); IntelliJ IDEA >8.1 (standard feature)
GNU arch ArchZoom ArchWay (GTK2), TlaLog Emacs (standard VC)
LibreSource Synchronizer LibreSource Windows, Linux, Unix, Mac OS X available [68] ?
Mercurial included [69], Trac Hgk (Tcl/Tk), (h)gct (Qt), TortoiseHg (Windows Explorer, Nautilus) Eclipse (Mercurial Eclipse), NetBeans ([75]), Visual Studio 2008 ([76]), Emacs, Vim (VCSCommand plugin)
Monotone ViewMTN, TracMonotone, Monotone-Viz (GTK+), Qt available ?
Perforce included, P4Web, P4FTP Windows, Linux, Unix, Mac OS X, BeOS available Eclipse, Visual Studio (P4SCC), KDevelop (standard?), IDEA (standard?)
Plastic SCM Not necessary since entire project is replicated locally Windows, Linux, Unix, Mac OS X available Eclipse, Visual Studio, JDeveloper
PureCM Yes Windows, Linux, Unix, Mac OS X, Sun Solaris available Visual Studio (SCC API)
Razor Yes, Apache, IIS Unix, Linux,Windows, Mac OS X ?
SourceAnywhere Hosted not included Windows, Linux, Unix, Mac OS X, Solaris available Visual Studio, Eclipse, Dreamweaver
SourceHaven included Windows, Linux, Unix, Mac OS X, BeOS available ?
StarTeam included Windows, Java, Eclipse, Visual Studio, BDS2006 integration, plus Java command-line IDEA (standard?)
Subversion Apache 2 module included, WebSVN, ViewSVN, ViewVC, Trac, SharpForge, sventon Qt, TortoiseSVN (Windows Explorer), KDESVN, Java, Mac OS X[77], Nautilus Eclipse (Subclipse, Subversive), Visual Studio (AnkhSVN, Unified SCC, VisualSVN), Netbeans, IDEA (standard), KDevelop (standard), TextMate (SVNMate plugin), Emacs (standard VC), MonoDevelop (standard)
Surround SCM WebDAV Windows, Linux, Unix, Mac OS X IDEA (proprietary), Eclipse, Visual Studio
SVK ? ? ?
Synergy via Telelogic Change interface Windows (incl. explorer integration), Linux, Unix, Java, plus command-line and API 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
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 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 checkin/checkout files.

History and adoption

Software History Notable users
AccuRev First publicly released in 2002 Clients include: SanDisk, Sony, Orbitz, MCI, and Polycom[citation needed]
Aldon Founded in 1979 to provide software configuration and change management solutions to IT Clients include: Nintendo, AIG, Kraft Foods, Banner Health, EON Bank, and Masterbrand Cabinets[citation needed]
AllChange First released 1993 Lloyds TSB Bank, Cubic Corporation, University College London, Avery Weightronix, Attorneys Title Insurance Fund and many other organisations world wide
CA Software Change Manager Initially created to track changes in aircraft manufacture Halifax (bank), and over 2000 organizations worldwide[citation needed]
Bazaar Loosely related to baz Ubuntu, Launchpad, KatchTV [78], MySQL
BitKeeper Evolved from Sun WorkShop TeamWare Linux Kernel (2002-2005) and many companies [79]
ClearCase Developed beginning in 1990 by Atria Software, following concepts developed by Apollo Computer in DSEE during the 1980s IBM, Cisco, Motorola, Siemens, Ericsson, Nokia and other large organizations worldwide[citation needed]
Code Co-op The first distributed VCS, demoed in 1997 [80], released soon after. Clients include: Logitech, HP, Ericsson[citation needed]
CVS First publicly released July 3, 1986; based on RCS thousands of organizations worldwide[citation needed]
CVSNT 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. If you search the cvsnt, wincvs and tortoisecvs newsgroups for any Fortune 500 company you like you will see that almost any large company you care to name that develops software uses CVSNT.[citation needed]
darcs First announced on April 9, 2003 DokuWiki, Mnet, Projects Using Darcs
DesignSync First released in 1997 by Synchronicity Inc. Synchronicity was acquired in 2004 by MatrixOne, which was acquired by Dassault Systemes in 2006. 33 of the top 50 Semiconductor Companies[citation needed]
Git Started by Linus Torvalds in April 2005, following the BitKeeper controversy.[70] Linux kernel, GNOME, Perl 5 [81], X.Org, Cairo, Qt Software, Samba, OpenEmbedded, Ruby on Rails, Wine, Fluxbox, Openbox, Compiz Fusion, XCB, ELinks, XMMS2, e2fsprogs, GNU Core Utilities (Also see list of Git projects)
GNU arch 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
LibreSource Synchronizer First publicly released on June 13, 2005 Most of the LibreSource Community
Mercurial Started April 6, 2005 by Matt Mackall, following the BitKeeper controversy.[70] First released on April 19, 2005 Mozilla, NetBeans, Xine, Xen, OpenJDK, OpenSolaris, wmii, MoinMoin, Linux-HA, [82]
Monotone First released in April 2003 coLinux, CTWM, Pidgin, Xaraya [83]
Perforce Developed by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald. many organizations worldwide [84], FreeBSD[85]
Plastic SCM Developed by Codice Software, Inc which was founded in 2005 by Pablo Santos and David Suarez many organizations[citation needed]
PureCM First publicly released in 2005 ?
Razor First publicly released in 1990 Clients include: Lockheed Martin, Boeing, Motorola, Raytheon and many other leading companies[citation needed]
Revision Control System 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 Developed by StarBase software, acquired by Borland. Borland, BT, Cintas, EDS, Kaiser Permanente, Met Office, Quest Software, Raymond James, Siemens, and many more globally distributed companies[86]
Subversion Started in 2000 by CVS developers with goal of replacing CVS ASF, SourceForge, FreeBSD, Google Code, KDE, GCC, Ruby, Python, Mono, PuTTY, Zope, Xiph, GnuPG, CUPS, Wireshark, TWiki, Django, and many organizations worldwide [87]
Surround SCM First publicly released on July 29, 2002. American Stock Exchange, Northrop Grumman, CDC, Ross Systems, Tybrin, and many organizations worldwide[citation needed]
SVK 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 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 is now known as Telelogic Synergy. Nokia, Philips, Raytheon, Morgan Stanley, Friends Provident, Boeing, Lockheed Martin, Siemens and other small, medium and large organizations worldwide[citation needed]
Team Foundation Server First publicly released on March, 2006 Available on CodePlex, Microsoft itself and other large organizations worldwide[citation needed]
Vault First publicly released in February, 2003 ?
Visual SourceSafe 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.

Notes

  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. ^ As of version 2.5, "LibreSource is now released under GPL Version 2".
  4. ^ SVK allows Subversion to have Distributed branches.
  5. ^ 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.
  6. ^ 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.
  7. ^ A Bazaar bundle is a summary diff, with sufficient extra information to preserve history.
  8. ^ Mercurial revision numbers are local to a repository; they can differ from repository to repository depending on in which order merges are performed.
  9. ^ "Mercurial 0.5b vs git". overview of performance/scalability. Retrieved 2006-12-05.
  10. ^ 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.
  11. ^ They can be automatically generated[1] and manually verified, but verification is not automatic
  12. ^ Support Policy for National Languages and ClearCase[2]
  13. ^ Support multi lingual filenames (across clients and servers with different codepages) and unicode text files.
  14. ^ darcs' patches each bear a unique identifier, it's pretty much impossible to merge twice the same patch in a repository
  15. ^ checkins and tag are atomics
  16. ^ Git itself is not internationalized, just git-gui and gitk (both are shipped with git).
  17. ^ Its possible to embed the action in a shell or Ant script.
  18. ^ A merged is tracked by its workspace origin.
  19. ^ Mercurial versions 0.9.4 and higher support symlinks.
  20. ^ Mercurial is in the process of being translated to at least dutch and chinese
  21. ^ It could be done via user level hooks
  22. ^ Perforce Knowledge Base: Renaming Files
  23. ^ StarTeam supports atomic commits as of version 2006
  24. ^ 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.
  25. ^ New to SVN 1.5 ([3]). A separate tool "svnmerge" ([4]) provides merge tracking for older versions.
  26. ^ 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 [5] 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.
  27. ^ Uses subversion server
  28. ^ Signature - SVK Wiki
  29. ^ Note that VSS Shares do not support anything like actual Unix symbolic links
  30. ^ 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.
  31. ^ embedding of foreign repositories in the source tree
  32. ^ either read/write support or read-only (conversion, potentially repeated)
  33. ^ Using alias of the CVSROOT/modules file.
  34. ^ Darcs can do sparse checkouts from explicit checkpoints on darcs-1 repositories, but not from darcs-2 ones[citation needed]
  35. ^ The Git FAQ states that keyword expansion is not a good thing, see the Git FAQ
  36. ^ git-add(1) Manual Page
  37. ^ git-submodule(1) Manual Page
  38. ^ Mercurial KeywordExtension page
  39. ^ Why You Don't Need [Keyword Substitution]
  40. ^ Mercurial RecordExtension page
  41. ^ hgforest repository
  42. ^ hgsubversion page
  43. ^ Mercurial ConvertExtension page
  44. ^ Keyword Substitution
  45. ^ Externals Definitions
  46. ^ SVN keeps the rights of files as they were when they were first checked in, but does not allow changing them later on.
  47. ^ By default, SVN does not keep original timestamps when files are checked out. But this behavior can be changed.
  48. ^ branches that don't get sent to remote repositories
  49. ^ get a file under VCS tracking
  50. ^ darcs doesn't have named branches, local or not, branching is handled solely through repository cloning
  51. ^ darcs send prepares a bundle of patches, defaults to sending it by mail but can send it to a file instead
  52. ^ Mercurial Bookmarks extension page
  53. ^ Mercurial Rebase Project page
  54. ^ create custom aliases for specific commands or combination thereof
  55. ^ exclusively lock a file to prevent others from editing it
  56. ^ temporarily set aside part or all of the changes in the working directory
  57. ^ remove a patch/revision from the history and destroy it, unsafe on non-private repostories
  58. ^ move only some revisions from a branch to another one (instead of merging the branches)
  59. ^ binary search of a change
  60. ^ query the differences between the local repository and a remote one (the patches that would be fetched/sent on a pull/push)
  61. ^ grep files throughout the repository's history
  62. ^ 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 fullfilled
  63. ^ 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)
  64. ^ git stash is a multi-level shelve, it's possible to shelve several change groups at the same time
  65. ^ Mercurial Shelve extension page
  66. ^ Mercurial Transplant extension page
  67. ^ incoming only, list remotely modified files not revisions
  68. ^ Any OS that support a Java Virtual Machine 1.5
  69. ^ hgweb for single-repository access and hgwebdir for multiple repository access from a single HTTP address
  70. ^ a b Towards A Better SCM: Revlogs and Mercurial, presented by Matt Mackall to the Ottawa Linux Symposium, July 2006

See also

External links