Comparison of version-control software: Difference between revisions
Appearance
Content deleted Content added
m Link, or do not. There is no try |
No edit summary |
||
Line 14: | Line 14: | ||
! Cost |
! Cost |
||
|- |
|- |
||
! {{Rh}} | [[AccuRev(vcs)|AccuRev]] |
! {{Rh}} | [[AccuRev(vcs)|AccuRev]] [http://www.accurev.com/] |
||
| [[AccuRev]], Inc. |
| [[AccuRev]], Inc. |
||
| actively developed |
| actively developed |
||
Line 23: | Line 23: | ||
| {{nonfree}} $1495 (enterprise) for each license, free 5-user 30 day trial licenses available |
| {{nonfree}} $1495 (enterprise) for each license, free 5-user 30 day trial licenses available |
||
|- |
|- |
||
! {{Rh}} | [[Bazaar (software)|Bazaar]] |
! {{Rh}} | [[Bazaar (software)|Bazaar]][http://www.bazaar-vcs.org/] |
||
| [[Canonical Ltd.]] |
| [[Canonical Ltd.]] |
||
| actively developed |
| actively developed |
||
Line 32: | Line 32: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[BitKeeper]] |
! {{Rh}} | [[BitKeeper]][http://www.bitkeeper.com/] |
||
| BitMover Inc. |
| BitMover Inc. |
||
| actively developed |
| actively developed |
||
Line 41: | Line 41: | ||
| {{nonfree}} Quoted on an individual basis. |
| {{nonfree}} Quoted on an individual basis. |
||
|- |
|- |
||
! {{Rh}} | [[ClearCase]] |
! {{Rh}} | [[ClearCase]][http://www.ibm.com/software/awdtools/clearcase/] |
||
| [[Rational Software|IBM Rational]] |
| [[Rational Software|IBM Rational]] |
||
| actively developed |
| actively developed |
||
Line 50: | Line 50: | ||
| {{nonfree}} $4600 per floating license (held for 30-minutes minimum per user) |
| {{nonfree}} $4600 per floating license (held for 30-minutes minimum per user) |
||
|- |
|- |
||
! {{Rh}} | [[Code Co-op]] |
! {{Rh}} | [[Code Co-op]][http://www.relisoft.com/] |
||
| Reliable Software |
| Reliable Software |
||
| actively developed |
| actively developed |
||
Line 59: | Line 59: | ||
| {{nonfree}} $150 per seat |
| {{nonfree}} $150 per seat |
||
|- |
|- |
||
! {{Rh}} | [[Codeville]] |
! {{Rh}} | [[Codeville]][http://www.codeville.org/] |
||
| Ross Cohen |
| Ross Cohen |
||
| [http://codeville.org official site] offline; latest release {{release date|2007|07|13}} |
| [http://codeville.org official site] offline; latest release {{release date|2007|07|13}} |
||
Line 68: | Line 68: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[Concurrent Versions System|CVS]] |
! {{Rh}} | [[Concurrent Versions System|CVS]][http://www.nongnu.org/cvs/] |
||
| The CVS Team [http://savannah.nongnu.org/project/memberlist.php?detailed=1&group=cvs] |
| The CVS Team [http://savannah.nongnu.org/project/memberlist.php?detailed=1&group=cvs] |
||
| maintained but new features not added |
| maintained but new features not added |
||
Line 77: | Line 77: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[CVSNT]] |
! {{Rh}} | [[CVSNT]][http://www.cvsnt.org/] |
||
| March Hare Software [http://march-hare.com/cvspro/] and community members. |
| March Hare Software [http://march-hare.com/cvspro/] and community members. |
||
| maintained and new features under development |
| maintained and new features under development |
||
Line 86: | Line 86: | ||
| {{partial|Free for older version or £85 commercial license for latest version of CVS Suite or Change Management Server}} |
| {{partial|Free for older version or £85 commercial license for latest version of CVS Suite or Change Management Server}} |
||
|- |
|- |
||
! {{Rh}} | [[darcs]] |
! {{Rh}} | [[darcs]][http://darcs.net/] |
||
| David Roundy |
|||
| The Darcs team |
|||
| actively developed |
| actively developed |
||
| [[Distributed revision control|Distributed]] |
| [[Distributed revision control|Distributed]] |
||
Line 95: | Line 95: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[Fossil (software)|Fossil]] |
! {{Rh}} | [[Fossil (software)|Fossil]][http://www.fossil-scm.org/] |
||
| [[D. Richard Hipp]] |
| [[D. Richard Hipp]] |
||
| actively developed |
| actively developed |
||
Line 104: | Line 104: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[Git (software)|Git]] |
! {{Rh}} | [[Git (software)|Git]][http://git.or.cz/] |
||
| [[Junio Hamano]] |
| [[Junio Hamano]] |
||
| actively developed |
| actively developed |
||
Line 113: | Line 113: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[GNU arch]] |
! {{Rh}} | [[GNU arch]][http://www.gnu.org/software/gnu-arch/] |
||
| Andy Tai |
| Andy Tai |
||
| maintained but new features not added |
| maintained but new features not added |
||
Line 122: | Line 122: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[IC Manage]] |
! {{Rh}} | [[IC Manage]][http://www.icmanage.com/] |
||
| IC Manage Inc. |
| IC Manage Inc. |
||
| actively developed |
| actively developed |
||
Line 131: | Line 131: | ||
| {{nonfree}} Commercial |
| {{nonfree}} Commercial |
||
|- |
|- |
||
! {{Rh}} | [[LibreSource|LibreSource Synchronizer]] |
! {{Rh}} | [[LibreSource|LibreSource Synchronizer]][http://www.libresource.org/] |
||
| Artenum [http://www.artenum.com] |
| Artenum [http://www.artenum.com] |
||
| maintained and new features under development |
| maintained and new features under development |
||
Line 140: | Line 140: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! Software |
|||
! {{Rh}} | [[Mercurial]] |
|||
! Maintainer |
|||
! Development status |
|||
! [[#Repository model|Repository model]] |
|||
! [[#Concurrency model|Concurrency model]] |
|||
! [[Software license|License]] |
|||
! Platforms supported |
|||
! Cost |
|||
|- |
|||
! {{Rh}} | [[Mercurial]][http://www.selenic.com/mercurial/] |
|||
| Matt Mackall |
| Matt Mackall |
||
| actively developed |
| actively developed |
||
Line 149: | Line 158: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
| {{Rh}} | [[MKS (software)|MKS]] |
| {{Rh}} | [[MKS (software)|MKS]][http://www.mks.com/products/source] |
||
| MKS Inc |
| MKS Inc |
||
| actively developed |
| actively developed |
||
Line 158: | Line 167: | ||
| {{nonfree}} |
| {{nonfree}} |
||
|- |
|- |
||
! {{Rh}} | [[Monotone (software)|Monotone]] |
! {{Rh}} | [[Monotone (software)|Monotone]][http://monotone.ca/] |
||
| Nathaniel Smith, Graydon Hoare |
| Nathaniel Smith, Graydon Hoare |
||
| actively developed |
| actively developed |
||
Line 167: | Line 176: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[Perforce]] |
! {{Rh}} | [[Perforce]][http://www.perforce.com/] |
||
| Perforce Software Inc. |
| Perforce Software Inc. |
||
| actively developed |
| actively developed |
||
Line 176: | Line 185: | ||
| {{Partial|Free for up to 2 users, and for OSS development; else $900 per seat, with volume discounts}} [http://www.perforce.com/perforce/price.html] |
| {{Partial|Free for up to 2 users, and for OSS development; else $900 per seat, with volume discounts}} [http://www.perforce.com/perforce/price.html] |
||
|- |
|- |
||
! {{Rh}} | [[Plastic SCM]] [http://www.codicesoftware.com/] |
|||
| Codice Software [http://www.plasticscm.com/] |
|||
| actively developed |
|||
| [[Distributed]] |
|||
| Merge or lock |
|||
| {{Proprietary}} |
|||
| [([[Linux]], [[Microsoft Windows|Windows]], [[Mac OS X]]) |
|||
| {{nonfree}}. Free 5-user 30 day trial licenses [http://www.codicesoftware.com/app01/opdownloads2.aspx] available.[http://www.codicesoftware.com/opbuy2.aspx] <ref>Plastic SCM Pricing [http://www.codicesoftware.com/opbuy2.aspx] </ref> |
|||
|- |
|||
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]][https://jazz.net/projects/rational-team-concert/] |
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]][https://jazz.net/projects/rational-team-concert/] |
||
| [[Rational Software|IBM Rational]] |
| [[Rational Software|IBM Rational]] |
||
Line 185: | Line 203: | ||
| {{Partial|Free for up to 10 users; else non-free}} |
| {{Partial|Free for up to 10 users; else non-free}} |
||
|- |
|- |
||
! {{Rh}} | [[StarTeam]] |
! {{Rh}} | [[StarTeam]][http://www.borland.com/starteam] |
||
| Borland (Micro Focus) |
| Borland (Micro Focus) |
||
| actively developed |
| actively developed |
||
Line 194: | Line 212: | ||
| {{nonfree}} $7500 per concurrent, $2500 per fixed user. |
| {{nonfree}} $7500 per concurrent, $2500 per fixed user. |
||
|- |
|- |
||
! {{Rh}} | [[Subversion (software)|Subversion (SVN)]] |
! {{Rh}} | [[Subversion (software)|Subversion (SVN)]][http://subversion.tigris.org/] |
||
| CollabNet, Inc.[http://www.collab.net/] |
| CollabNet, Inc.[http://www.collab.net/] |
||
| actively developed |
| actively developed |
||
Line 203: | Line 221: | ||
| {{free|Free (Commercial support/services available)}} |
| {{free|Free (Commercial support/services available)}} |
||
|- |
|- |
||
! {{Rh}} | [[SVK]] |
! {{Rh}} | [[SVK]][http://svk.bestpractical.com/] |
||
| Best Practical [http://bestpractical.com/] |
| Best Practical [http://bestpractical.com/] |
||
| maintenance through 2010, no new features<ref>{{cite web |title=The Future of SVK | url=http://lists.bestpractical.com/pipermail/svk-devel/2009-May/001224.html | date=May 28, 2009 | accessdate=June 6, 2009}}</ref> |
| maintenance through 2010, no new features<ref>{{cite web |title=The Future of SVK | url=http://lists.bestpractical.com/pipermail/svk-devel/2009-May/001224.html | date=May 28, 2009 | accessdate=June 6, 2009}}</ref> |
||
Line 212: | Line 230: | ||
| {{Free}} |
| {{Free}} |
||
|- |
|- |
||
! {{Rh}} | [[Visual Studio Team Foundation Server|Team Foundation Server]] |
! {{Rh}} | [[Visual Studio Team Foundation Server|Team Foundation Server]][http://msdn.microsoft.com/vstudio/teamsystem/] |
||
| [[Microsoft]] |
| [[Microsoft]] |
||
| actively developed |
| actively developed |
||
Line 221: | Line 239: | ||
| {{nonfree}} Licensed through MSDN subscription or through direct buy |
| {{nonfree}} Licensed through MSDN subscription or through direct buy |
||
|- |
|- |
||
! {{Rh}} | [[Telelogic Synergy|Synergy]] |
! {{Rh}} | [[Telelogic Synergy|Synergy]][http://www.ibm.com/software/awdtools/synergy] |
||
| [[Rational Software|IBM Rational]] |
| [[Rational Software|IBM Rational]] |
||
| actively developed |
| actively developed |
||
Line 230: | Line 248: | ||
| {{nonfree}} Contact IBM Rational [http://www.ibm.com/software/awdtools/synergy] |
| {{nonfree}} Contact IBM Rational [http://www.ibm.com/software/awdtools/synergy] |
||
|- |
|- |
||
! {{Rh}} | [[Vault (revision control system)|Vault]] |
! {{Rh}} | [[Vault (revision control system)|Vault]][http://www.sourcegear.com] |
||
| SourceGear LLC [http://www.sourcegear.com] |
| SourceGear LLC [http://www.sourcegear.com] |
||
| actively developed |
| actively developed |
||
Line 239: | Line 257: | ||
| {{nonfree}} $300 per user |
| {{nonfree}} $300 per user |
||
|- |
|- |
||
! {{Rh}} | [[Visual SourceSafe]] |
! {{Rh}} | [[Visual SourceSafe]][http://msdn2.microsoft.com/en-us/vstudio/aa700900.aspx] |
||
| [[Microsoft]] |
| [[Microsoft]] |
||
| serious bug fixes only |
| serious bug fixes only |
||
Line 273: | Line 291: | ||
! Software |
! Software |
||
! [[Programming language]] |
! [[Programming language]] |
||
! History model |
! History model {{Citation needed|date=February 2010}} |
||
! Scope of change |
|||
! [[#Revision IDs|Revision IDs]] |
! [[#Revision IDs|Revision IDs]] |
||
! [[#Repository size|Repository size]] {{Citation needed|date=February 2010}} |
|||
! [[Protocol (computing)|Network protocols]] |
! [[Protocol (computing)|Network protocols]] |
||
! Source Code Size |
! Source Code Size |
||
Line 282: | Line 300: | ||
| [[C++]], [[Java (programming language)|Java]] |
| [[C++]], [[Java (programming language)|Java]] |
||
| Changeset |
| Changeset |
||
| Namespace |
|||
| {{Unk}} |
|||
| [[Big O notation|O]](revisions) |
|||
| Numbers |
|||
| custom |
| custom |
||
| {{Unk}} |
| {{Unk}} |
||
Line 290: | Line 308: | ||
| [[Python (programming language)|Python]], [[Pyrex (programming language)|Pyrex]], [[C (programming language)|C]]<ref>Bazaar's critical modules are written in [[Pyrex (programming language)|Pyrex]]. They are automatically translated to pure [[C (programming language)|C]]; except for the [[patience sorting]] module, used in merge resolution, which is written directly in the [[C (programming language)|C]] language.</ref> |
| [[Python (programming language)|Python]], [[Pyrex (programming language)|Pyrex]], [[C (programming language)|C]]<ref>Bazaar's critical modules are written in [[Pyrex (programming language)|Pyrex]]. They are automatically translated to pure [[C (programming language)|C]]; except for the [[patience sorting]] module, used in merge resolution, which is written directly in the [[C (programming language)|C]] language.</ref> |
||
| Snapshot |
| Snapshot |
||
| Tree |
|||
| Pseudorandom |
| Pseudorandom |
||
| [[Big O notation|O]](patch) |
|||
| [[Hypertext Transfer Protocol|HTTP]], [[SSH file transfer protocol|SFTP]], [[File Transfer Protocol|FTP]], custom, custom over [[Secure Shell|ssh]], custom over [[Hypertext Transfer Protocol|HTTP]], email bundles<ref>A Bazaar bundle is a summary diff, with sufficient extra information to preserve history.</ref>, WebDAV (with plugin) |
| [[Hypertext Transfer Protocol|HTTP]], [[SSH file transfer protocol|SFTP]], [[File Transfer Protocol|FTP]], custom, custom over [[Secure Shell|ssh]], custom over [[Hypertext Transfer Protocol|HTTP]], email bundles<ref>A Bazaar bundle is a summary diff, with sufficient extra information to preserve history.</ref>, WebDAV (with plugin) |
||
| 4.1 MB |
| 4.1 MB |
||
|- |
|- |
||
! {{Rh}} | [[BitKeeper]] |
! {{Rh}} | [[BitKeeper]] |
||
| C |
|||
| [[C (programming language)|C]] |
|||
| {{Unk}} |
|||
| Changeset |
|||
| |
| {{Unk}} |
||
| {{Unk}} |
| {{Unk}} |
||
| {{Unk}} |
| {{Unk}} |
||
Line 304: | Line 322: | ||
|- |
|- |
||
! {{Rh}} | [[ClearCase]] |
! {{Rh}} | [[ClearCase]] |
||
| C, Java, Perl |
|||
| [[C (programming language)|C]], [[Java (programming language)|Java]], [[Perl]] |
|||
| Changeset |
| Changeset |
||
| Namespace |
|||
| File |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| [[Hypertext Transfer Protocol|HTTP]], custom (CCFS), custom ([[MultiVersion File System|MVFS]] filesystem driver) |
| [[Hypertext Transfer Protocol|HTTP]], custom (CCFS), custom ([[MultiVersion File System|MVFS]] filesystem driver) |
||
| {{Unk}} |
| {{Unk}} |
||
Line 314: | Line 332: | ||
| [[C++]] |
| [[C++]] |
||
| Changeset |
| Changeset |
||
| {{Unk}} |
|||
| User ID-Ordinal |
| User ID-Ordinal |
||
| [[Big O notation|O]](patch) |
|||
| e-mail ([[Messaging Application Programming Interface|MAPI]], [[SMTP]]/[[POP3]], [[Gmail]]), [[Local area network|LAN]] |
| e-mail ([[Messaging Application Programming Interface|MAPI]], [[SMTP]]/[[POP3]], [[Gmail]]), [[Local area network|LAN]] |
||
| {{Unk}} |
| {{Unk}} |
||
|- |
|- |
||
! {{Rh}} | [[Codeville]] |
! {{Rh}} | [[Codeville]] |
||
| Python |
|||
| [[Python (programming language)|Python]] |
|||
| {{Unk}} |
| {{Unk}} |
||
| {{Unk}} |
| {{Unk}} |
||
Line 330: | Line 348: | ||
| [[C (programming language)|C]] |
| [[C (programming language)|C]] |
||
| Changeset |
| Changeset |
||
| Namespace |
|||
| File |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| pserver [http://www.elegosoft.com/cvs/cvsclient.html], [[Secure Shell|ssh]] |
| pserver [http://www.elegosoft.com/cvs/cvsclient.html], [[Secure Shell|ssh]] |
||
| 3.3 MB |
| 3.3 MB |
||
Line 338: | Line 356: | ||
| [[C++]] |
| [[C++]] |
||
| Changeset |
| Changeset |
||
| Namespace |
|||
| {{Unk}} |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| sspi, sserver, gserver, pserver, custom over [[Secure Shell|ssh]] |
| sspi, sserver, gserver, pserver, custom over [[Secure Shell|ssh]] |
||
| 4.4MiB |
| 4.4MiB |
||
Line 346: | Line 364: | ||
| [[Haskell (programming language)|Haskell]] |
| [[Haskell (programming language)|Haskell]] |
||
| Patch |
| Patch |
||
| Namespace |
|||
| Tree |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| [[Hypertext Transfer Protocol|HTTP]], custom over [[secure shell|ssh]], email |
| [[Hypertext Transfer Protocol|HTTP]], custom over [[secure shell|ssh]], email |
||
| 1.7 MB |
| 1.7 MB |
||
Line 354: | Line 372: | ||
| [[C (programming language)|C]] |
| [[C (programming language)|C]] |
||
| Snapshot |
| Snapshot |
||
| Tree |
|||
| [[SHA-1]] hashes |
| [[SHA-1]] hashes |
||
| [[Big O notation|O]](patch) |
|||
| [[Hypertext Transfer Protocol|HTTP]] |
| [[Hypertext Transfer Protocol|HTTP]] |
||
| 7.2 MB |
|||
| 7.2 MB<ref>4 MB of which are sqlite3.c</ref> |
|||
|- |
|- |
||
! {{Rh}} | [[Git (software)|Git]] |
! {{Rh}} | [[Git (software)|Git]] |
||
| [[C (programming language)|C]], [[shell script]]s, [[Perl]] |
| [[C (programming language)|C]], [[shell script]]s, [[Perl]] |
||
| Snapshot |
| Snapshot |
||
| Tree |
|||
| [[SHA-1]] hashes |
| [[SHA-1]] hashes |
||
| [[Big O notation|O]](patch) |
|||
| custom, custom over [[secure shell|ssh]], [[rsync]], [[Hypertext Transfer Protocol|HTTP]], email, bundles |
| custom, custom over [[secure shell|ssh]], [[rsync]], [[Hypertext Transfer Protocol|HTTP]], email, bundles |
||
| 10.2 MB |
| 10.2 MB |
||
Line 370: | Line 388: | ||
| [[C (programming language)|C]], [[shell script]]s |
| [[C (programming language)|C]], [[shell script]]s |
||
| Changeset |
| Changeset |
||
| Namespace |
|||
| Tree |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| [[WebDAV]], [[Hypertext Transfer Protocol|HTTP]] |
| [[WebDAV]], [[Hypertext Transfer Protocol|HTTP]] |
||
| {{Unk}} |
| {{Unk}} |
||
|- |
|- |
||
! {{Rh}} | [[IC Manage]] |
! {{Rh}} | [[IC Manage]] |
||
| c++, c |
|||
| [[C++]], [[C (programming language)|C]] |
|||
| Changeset |
| Changeset |
||
| Namespace |
|||
| {{Unk}} |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| custom |
| custom |
||
| {{Unk}} |
| {{Unk}} |
||
Line 386: | Line 404: | ||
| [[Java (programming language)|Java]] |
| [[Java (programming language)|Java]] |
||
| Changeset |
| Changeset |
||
| Timestamp of the repository |
|||
| {{Unk}} |
|||
| [[Big O notation|O]](patch) |
|||
| Timestamps |
|||
| HTTP, File-System |
| HTTP, File-System |
||
| {{Unk}} |
| {{Unk}} |
||
Line 394: | Line 412: | ||
! [[Programming language]] |
! [[Programming language]] |
||
! History model |
! History model |
||
! Scope of change |
|||
! [[#Revision IDs|Revision IDs]] |
! [[#Revision IDs|Revision IDs]] |
||
! [[#Repository size|Repository size]] |
|||
! [[Protocol (computing)|Network protocols]] |
! [[Protocol (computing)|Network protocols]] |
||
! Source Code Size |
! Source Code Size |
||
Line 402: | Line 420: | ||
| [[Python (programming language)|Python]], [[C (programming language)|C]] |
| [[Python (programming language)|Python]], [[C (programming language)|C]] |
||
| Changeset |
| Changeset |
||
| Tree |
|||
| Numbers,<ref>Mercurial revision numbers are local to a repository; they can differ from repository to repository depending on in which order merges are performed.</ref> [[SHA-1]] hashes |
| Numbers,<ref>Mercurial revision numbers are local to a repository; they can differ from repository to repository depending on in which order merges are performed.</ref> [[SHA-1]] hashes |
||
| [[Big O notation|O]](patch)<ref name="mercurial-speed">{{cite web |title=Mercurial 0.5b vs git |work=overview of performance/scalability |url=http://www.selenic.com/pipermail/mercurial/2005-May/000334.html |accessdate=2006-12-05}}</ref> |
|||
| [[Hypertext Transfer Protocol|HTTP]], custom over [[secure shell|ssh]], email bundles (with standard plugin) |
| [[Hypertext Transfer Protocol|HTTP]], custom over [[secure shell|ssh]], email bundles (with standard plugin) |
||
| 1.2 MB |
| 1.2 MB |
||
|- |
|- |
||
! {{Rh}} | [[MKS]] |
! {{Rh}} | [[MKS]] |
||
| C, Java |
|||
| [[C (programming language)|C]], [[Java (programming language)|Java]] |
|||
| {{Unk}} |
| {{Unk}} |
||
| Namespace |
|||
| {{Unk}} |
| {{Unk}} |
||
| Numbers |
|||
| HTTP, custom |
| HTTP, custom |
||
| {{Unk}} |
| {{Unk}} |
||
Line 418: | Line 436: | ||
| [[C++]] |
| [[C++]] |
||
| Hybrid<ref>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.</ref> |
| Hybrid<ref>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.</ref> |
||
| Tree |
|||
| [[SHA-1]] hashes |
| [[SHA-1]] hashes |
||
| [[Big O notation|O]](patch) |
|||
| custom (''netsync''), custom over [[Secure Shell|ssh]], file system |
| custom (''netsync''), custom over [[Secure Shell|ssh]], file system |
||
| 4.4 MB |
| 4.4 MB |
||
|- |
|- |
||
! {{Rh}} | [[Perforce]] |
! {{Rh}} | [[Perforce]] |
||
| c++, c |
|||
| [[C++]], [[C (programming language)|C]] |
|||
| Changeset |
| Changeset |
||
| Namespace |
|||
| Tree |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| custom |
| custom |
||
| {{Unk}} |
| {{Unk}} |
||
|- |
|- |
||
! {{Rh}} | [[ |
! {{Rh}} | [[Plastic SCM]] |
||
| [[Java |
| [[C.Java.net]] |
||
| Changeset |
| Changeset |
||
| Namespace |
|||
| [[Big O notation|O]](revisions) |
|||
| custom |
|||
| {{Unk}} |
| {{Unk}} |
||
|- |
|||
| Numbers |
|||
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]] |
|||
| Java |
|||
| Changeset |
|||
| Namespace |
|||
| [[Big O notation|O]](patch) |
|||
| [[Representational State Transfer|REST]] services over [[Hypertext Transfer Protocol|HTTP]]/[[HTTP Secure|HTTPS]] |
| [[Representational State Transfer|REST]] services over [[Hypertext Transfer Protocol|HTTP]]/[[HTTP Secure|HTTPS]] |
||
| {{Unk}} |
| {{Unk}} |
||
|- |
|- |
||
! {{Rh}} | [[StarTeam]] |
! {{Rh}} | [[StarTeam]] |
||
| C, Java |
|||
| [[C (programming language)|C]], [[Java (programming language)|Java]] |
|||
| Snapshot |
| Snapshot |
||
| {{Unk}} |
|||
| [[MD5]] hashes |
| [[MD5]] hashes |
||
| [[Big O notation|O]](revision) |
|||
| custom, TCP/IP |
| custom, TCP/IP |
||
| {{Unk}} |
| {{Unk}} |
||
Line 450: | Line 476: | ||
| [[C (programming language)|C]] |
| [[C (programming language)|C]] |
||
| Changeset and Snapshot |
| Changeset and Snapshot |
||
| Namespace |
|||
| Tree |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| custom (''svn''), custom (''svn'') over [[Secure Shell|ssh]], [[Hypertext Transfer Protocol|HTTP]] and SSL (using [[WebDAV]]) |
| custom (''svn''), custom (''svn'') over [[Secure Shell|ssh]], [[Hypertext Transfer Protocol|HTTP]] and SSL (using [[WebDAV]]) |
||
| 5.2 MB |
| 5.2 MB |
||
Line 458: | Line 484: | ||
| [[Perl]] |
| [[Perl]] |
||
| Changeset |
| Changeset |
||
| |
| {{Unk}} |
||
| |
| {{Unk}} |
||
| {{Unk}} |
| {{Unk}} |
||
| {{Unk}} |
| {{Unk}} |
||
|- |
|- |
||
! {{Rh}} | [[Telelogic Synergy|Synergy]] |
! {{Rh}} | [[Telelogic Synergy|Synergy]] |
||
| Java |
|||
| [[Java (programming language)|Java]] |
|||
| Changeset (text), Snapshot(binary) |
| Changeset (text), Snapshot(binary) |
||
| Namespace |
|||
| {{Unk}} |
|||
| [[Big O notation|O]](patch) |
|||
| Numbers |
|||
| [[Hypertext Transfer Protocol|HTTP]], custom over [[ssh]], custom |
| [[Hypertext Transfer Protocol|HTTP]], custom over [[ssh]], custom |
||
| {{Unk}} |
| {{Unk}} |
||
|- |
|- |
||
! {{Rh}} | [[Visual Studio Team Foundation Server|Team Foundation Server]] |
! {{Rh}} | [[Visual Studio Team Foundation Server|Team Foundation Server]] |
||
| |
| C++ and C# |
||
| Changeset |
| Changeset |
||
| Namespace |
|||
| {{Unk}} |
|||
| O(patch) |
|||
| Numbers |
|||
| SOAP over HTTP or HTTPS |
| SOAP over HTTP or HTTPS |
||
| {{Unk}} |
| {{Unk}} |
||
|- |
|- |
||
! {{Rh}} | [[Vault (revision control system)|Vault]] |
! {{Rh}} | [[Vault (revision control system)|Vault]] |
||
| C# |
|||
| [[C Sharp (programming language)|C#]] |
|||
| Changeset |
| Changeset |
||
| |
| ? |
||
| O(patch) |
|||
| {{Unk}} |
|||
| HTTP, HTTPS |
| HTTP, HTTPS |
||
| {{Unk}} |
| {{Unk}} |
||
|- |
|- |
||
! {{Rh}} | [[Visual SourceSafe]] |
! {{Rh}} | [[Visual SourceSafe]] |
||
| C |
|||
| [[C (programming language)|C]] |
|||
| Snapshot |
| Snapshot |
||
| Namespace? |
|||
| {{Unk}} |
|||
| O(changes)? |
|||
| {{Unk}} |
|||
| [[Server Message Block|SMB]] |
| [[Server Message Block|SMB]] |
||
| {{Unk}} |
| {{Unk}} |
||
Line 497: | Line 523: | ||
! Software |
! Software |
||
! [[Programming language]] |
! [[Programming language]] |
||
! History model |
! History model{{Citation needed|date=February 2010}} |
||
! Scope of change |
|||
! Revision IDs |
! Revision IDs |
||
! Repository size{{Citation needed|date=February 2010}} |
|||
! Network protocols |
! Network protocols |
||
! Source Code Size |
! Source Code Size |
||
Line 508: | Line 534: | ||
* ''Programming Language'': The coding language in which the application is being developed |
* ''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. |
* ''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. |
||
* ''Scope of change'': Describes whether changes are recorded for individual ''files'' or for a entire directory ''trees''. |
|||
* ''<span id="Revision IDs">Revision IDs</span>'': are used internally to identify specific versions of files in the repository. Systems may use ''[[pseudorandomness|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. |
* ''<span id="Revision IDs">Revision IDs</span>'': are used internally to identify specific versions of files in the repository. Systems may use ''[[pseudorandomness|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. |
||
* ''<span id="Repository size">Repository size</span>'': describes the growth-rate of the repository as changes are committed. ''O([[Patch (Unix)|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 [[protocol (computing)|protocols]] used for synchronization of changes. |
* ''Network protocols'': lists the [[protocol (computing)|protocols]] used for synchronization of changes. |
||
* ''Source Code Size'': Gives the size of the source code in megabytes. |
* ''Source Code Size'': Gives the size of the source code in megabytes. |
||
Line 569: | Line 595: | ||
|- |
|- |
||
! {{Rh}} | [[ClearCase]] |
! {{Rh}} | [[ClearCase]] |
||
| {{partial}}<ref> |
| {{partial|optional}}<ref>[https://publib.boulder.ibm.com/infocenter/cchelp/v7r1m0/index.jsp?topic=/com.ibm.rational.clearcase.relnotes.doc/topics/c_cc_relnotes_features.htm ClearCase 7.1.1 release notes]</ref> |
||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
Line 586: | Line 612: | ||
| {{yes}} |
| {{yes}} |
||
| {{no}} |
| {{no}} |
||
| {{partial}} |
| {{partial|limited support}} |
||
| {{no}} |
| {{no}} |
||
| {{no}} |
| {{no}} |
||
Line 612: | Line 638: | ||
| {{no}} |
| {{no}} |
||
| {{no}} |
| {{no}} |
||
| {{partial}} |
| {{partial|limited support}} |
||
| {{no}} |
| {{no}} |
||
| {{no}} |
| {{no}} |
||
Line 623: | Line 649: | ||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
| {{yes}}<ref>[http://www.march-hare.com/cvsnt/newfeatures]</ref> |
|||
| {{yes}} |
|||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
Line 661: | Line 687: | ||
! {{Rh}} | [[Git (software)|Git]] |
! {{Rh}} | [[Git (software)|Git]] |
||
| {{yes}} |
| {{yes}} |
||
| {{partial}}<ref>Git does not explicitly track renames |
| {{partial}}<ref>Git does not explicitly track renames. Renames are detected after the fact, if the file content does not change dramatically.</ref> |
||
| {{yes}} [http://www.kernel.org/pub/software/scm/git/docs/git-merge.html] |
|||
| {{yes}} |
|||
| {{yes}} |
|||
| {{yes}} |
|||
| {{yes}} |
| {{yes}} |
||
| {{yes}} [http://www.kernel.org/pub/software/scm/git/docs/githooks.html] |
|||
| {{yes}} [http://www.kernel.org/pub/software/scm/git/docs/git-tag.html] |
|||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
| {{partial}}<ref>Git itself is not internationalized, just git-gui and gitk (both are shipped with git).</ref> |
| {{partial}}<ref>Git itself is not internationalized, just git-gui and gitk (both are shipped with git).</ref> |
||
| {{no}} |
|||
| {{partial}}<ref>Git is encoding agnostic and hence can work with all file names without problems. It only may not display them properly in its console output.</ref> |
|||
|- |
|- |
||
! {{Rh}} | [[GNU arch]] |
! {{Rh}} | [[GNU arch]] |
||
Line 677: | Line 703: | ||
| {{Unk}} |
| {{Unk}} |
||
| {{yes}} |
| {{yes}} |
||
| {{yes}} [http://www.gnu.org/software/gnu-arch/tutorial-old/using-hooks.html] |
|||
| {{yes}} |
|||
| {{yes}} |
| {{yes}} |
||
| {{Unk}} |
| {{Unk}} |
||
Line 703: | Line 729: | ||
| {{yes}} |
| {{yes}} |
||
| {{no}} |
| {{no}} |
||
| {{partial}} <ref>Its possible to embed the action in a shell or Ant script.</ref> |
| {{partial|limited support}} <ref>Its possible to embed the action in a shell or Ant script.</ref> |
||
| {{no}} |
| {{no}} |
||
| {{yes}} <ref>A merged is tracked by its workspace origin.</ref> |
| {{yes}} <ref>A merged is tracked by its workspace origin.</ref> |
||
Line 728: | Line 754: | ||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
| {{yes}}<ref>Mercurial versions 0.9.4 and higher support symlinks.</ref> |
|||
| {{yes}} |
|||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
Line 755: | Line 781: | ||
| {{yes}} |
| {{yes}} |
||
| {{no}}<ref>It could be done via user level hooks</ref> |
| {{no}}<ref>It could be done via user level hooks</ref> |
||
| {{yes}} [http://www.venge.net/monotone/docs/Hooks.html] |
|||
| {{yes}} |
|||
| {{yes}}, mandatory |
| {{yes}}, mandatory |
||
| {{yes}} |
| {{yes}} |
||
Line 770: | Line 796: | ||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} [http://www.perforce.com/perforce/technotes/note009.html] |
||
| {{yes}} |
|||
| {{yes}} |
|||
| {{yes}} [http://kb.perforce.com/?article=66] |
|||
| {{yes}} [http://kb.perforce.com/article/66/internationalization-and-localization#i18n] |
|||
|-|- |
|||
! {{Rh}} | [[Plastic SCM]]<ref>What makes Plastic SCM different? [http://www.theregister.co.uk/2007/07/30/plastic_scm/page2.html]</ref> |
|||
| {{yes}} |
|||
| {{yes}} |
|||
| {{yes}} |
|||
| {{yes}} |
|||
| {{yes}} |
|||
| {{no}} |
|||
| {{yes}} |
|||
| {{no}} |
|||
| {{yes}} |
|||
| {{yes}} |
| {{yes}} |
||
| {{yes}} |
| {{yes}} |
||
| {{yes}}<ref>[http://kb.perforce.com/?article=66]</ref> |
|||
| {{yes}}<ref>[http://kb.perforce.com/article/66/internationalization-and-localization#i18n]</ref> |
|||
|- |
|- |
||
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]] |
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]] |
||
Line 871: | Line 910: | ||
| {{no}}<ref>Version change history is removed upon rename; old name not referenced.</ref> |
| {{no}}<ref>Version change history is removed upon rename; old name not referenced.</ref> |
||
| {{Unk}} |
| {{Unk}} |
||
| {{Partial|Yes (using shares)}}<ref>Note that VSS Shares do not support anything like actual Unix symbolic links</ref> |
|||
| {{no}} |
|||
| {{yes}} |
| {{yes}} |
||
| {{no}} |
| {{no}} |
||
Line 1,000: | Line 1,039: | ||
| {{Unk}} |
| {{Unk}} |
||
| N/A |
| N/A |
||
|- |
|||
! [[Plastic SCM]] |
|||
| {{no}} |
|||
| {{yes}} |
|||
| {{yes}} |
|||
| {{yes}} |
|||
| {{execution}} |
|||
| {{yes}} |
|||
| {{Subversion, Perforce, CVS, Sourcesafe}} |
|||
|- |
|- |
||
! [[SVK]] |
! [[SVK]] |
||
Line 1,140: | Line 1,188: | ||
| {{yes|revert}} |
| {{yes|revert}} |
||
| {{yes|send -o<ref>''darcs send'' prepares a bundle of patches, defaults to sending it by mail but can send it to a file instead</ref>}} |
| {{yes|send -o<ref>''darcs send'' prepares a bundle of patches, defaults to sending it by mail but can send it to a file instead</ref>}} |
||
| {{n/a|N/A<ref>darcs' patch-based model doesn't distinguish between merge and rebase -- both are the same operation</ref>}} |
|||
| {{coming soon}}{{update after|2011|08|01}} |
|||
|- |
|- |
||
! Fossil |
! Fossil |
||
Line 1,231: | Line 1,279: | ||
| {{unk}} |
| {{unk}} |
||
| {{unk}} |
| {{unk}} |
||
|- |
|||
! [[Plastic SCM]] |
|||
| {{yes|mkrep}} |
|||
| {{yes|replicate}} |
|||
| {{yes|replicate}} |
|||
| {{yes|replicate}} |
|||
| {{yes|mkbranch}} |
|||
| {{yes|checkout}} |
|||
| {{yes|update}} |
|||
| {{yes|add}} |
|||
| {{yes|remove}} |
|||
| {{yes|move}} |
|||
| {{no}} |
|||
| {{yes|merge}} |
|||
| {{yes|check in}} |
|||
| {{yes|revert}} |
|||
| {{yes|replicate--package}} |
|||
| {{yes|merge}} |
|||
|- |
|- |
||
! SVK |
! SVK |
||
Line 1,388: | Line 1,454: | ||
| {{unk}} |
| {{unk}} |
||
| {{unk}} |
| {{unk}} |
||
| {{ |
| {{no}} |
||
|- |
|||
! Plastic SCM |
|||
| {{no}} |
|||
| {{yes|check out co--lock}} |
|||
| {{yes|shelve}} |
|||
| {{yes|obliterate}} |
|||
| {{yes}} |
|||
| {{no}} |
|||
| {{no}} |
|||
| {{no}} |
|||
|- |
|- |
||
! SVK |
! SVK |
||
Line 1,478: | Line 1,554: | ||
| Not necessary since entire project is replicated locally |
| Not necessary since entire project is replicated locally |
||
| Windows |
| Windows |
||
| |
| ? |
||
|- |
|- |
||
! {{Rh}} | [[Concurrent Versions System|CVS]] |
! {{Rh}} | [[Concurrent Versions System|CVS]] |
||
Line 1,513: | Line 1,589: | ||
| {{yes2}} LibreSource |
| {{yes2}} LibreSource |
||
| Windows, Linux, Unix, Mac OS X available <ref>Any OS that support a Java Virtual Machine 1.5</ref> |
| Windows, Linux, Unix, Mac OS X available <ref>Any OS that support a Java Virtual Machine 1.5</ref> |
||
| |
| ? |
||
|- |
|- |
||
! {{Rh}} | [[Mercurial]] |
! {{Rh}} | [[Mercurial]] |
||
Line 1,523: | Line 1,599: | ||
| [http://grahame.angrygoats.net/viewmtn.shtml ViewMTN], [http://tracmtn.1erlei.de TracMonotone], |
| [http://grahame.angrygoats.net/viewmtn.shtml ViewMTN], [http://tracmtn.1erlei.de TracMonotone], |
||
| [http://oandrieu.nerim.net/monotone-viz Monotone-Viz] ([[GTK+]]), [http://guitone.thomaskeller.biz Guitone] ([[Qt toolkit|Qt]]), [http://www.coosoft.plus.com/software.html Monotone Browser] ([[GTK+]], [[Perl]]) |
| [http://oandrieu.nerim.net/monotone-viz Monotone-Viz] ([[GTK+]]), [http://guitone.thomaskeller.biz Guitone] ([[Qt toolkit|Qt]]), [http://www.coosoft.plus.com/software.html Monotone Browser] ([[GTK+]], [[Perl]]) |
||
| |
| ? |
||
|- |
|- |
||
! {{Rh}} | [[Perforce]] |
! {{Rh}} | [[Perforce]] |
||
| {{yes2}} included, P4Web, P4FTP |
| {{yes2}} included, P4Web, P4FTP |
||
| Windows, Linux, Unix, Mac OS X, [[BeOS]] available |
| Windows, Linux, Unix, Mac OS X, [[BeOS]] available |
||
| Eclipse, Visual Studio (P4SCC), KDevelop (standard?), IDEA (standard?), |
| Eclipse, Visual Studio (P4SCC), KDevelop (standard?), IDEA (standard?), Komodo IDE, BBEdit, Emacs |
||
|- |
|||
! {{Rh}} | [[Plastic SCM]] |
|||
| No |
|||
| [[Microsoft Windows|Windows]], [[Linux]], [[Mac OS X]], |
|||
| [[Eclipse (software)|Eclipse]], [[Microsoft Visual Studio|Visual Studio]],IntelliJ, LDAP, Rally, Version One, Jira, Bugzilla, Mantis, OnTime, FogBugZ, Final Builder, Pulse, Office 2003/2007. |
|||
|- |
|- |
||
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]] |
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]] |
||
Line 1,649: | Line 1,730: | ||
| style="text-align: left; padding-left: 0.5em" | <span style="display:none;">1993</span> Developed by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald. |
| style="text-align: left; padding-left: 0.5em" | <span style="display:none;">1993</span> Developed by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald. |
||
| style="text-align: left; padding-left: 0.5em" | many organizations worldwide [http://www.perforce.com/perforce/customers.html], [[FreeBSD]][http://www.freebsd.org/doc/en_US.ISO8859-1/articles/p4-primer/index.html] |
| style="text-align: left; padding-left: 0.5em" | many organizations worldwide [http://www.perforce.com/perforce/customers.html], [[FreeBSD]][http://www.freebsd.org/doc/en_US.ISO8859-1/articles/p4-primer/index.html] |
||
|- |
|||
! {{Rh}} | [[Plastic SCM]] |
|||
| style="text-align: left; padding-left: 0.5em" | <span style="display:none;">2002</span> Founded in 2005. Last release (Plastic SCM 3.0)in 2010. |
|||
| style="text-align: left; padding-left: 0.5em" | Clients include: HP, Vicarious Vision, DHL, L´Unique, and many others organizations worldwide. |
|||
|- |
|- |
||
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]] |
! {{Rh}} | [[IBM Rational Team Concert|Rational Team Concert]] |
||
Line 1,684: | Line 1,769: | ||
! {{Rh}} | [[Vault (revision control system)|Vault]] |
! {{Rh}} | [[Vault (revision control system)|Vault]] |
||
| style="text-align: left; padding-left: 0.5em" | <span style="display:none;">2003</span> First publicly released in February, 2003 |
| style="text-align: left; padding-left: 0.5em" | <span style="display:none;">2003</span> First publicly released in February, 2003 |
||
| |
| ? |
||
|- |
|- |
||
! {{Rh}} | [[Visual SourceSafe]] |
! {{Rh}} | [[Visual SourceSafe]] |
||
| style="text-align: left; padding-left: 0.5em" | <span style="display:none;">1995</span> 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 |
| style="text-align: left; padding-left: 0.5em" | <span style="display:none;">1995</span> 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 |
||
| |
| ? |
||
|-class="sortbottom" |
|-class="sortbottom" |
||
! Software |
! Software |
||
Line 1,714: | Line 1,799: | ||
* [http://better-scm.berlios.de/comparison/comparison.html Version Control System Comparison] from better-scm.berlios.de |
* [http://better-scm.berlios.de/comparison/comparison.html Version Control System Comparison] from better-scm.berlios.de |
||
* [http://opensolaris.org/os/community/tools/scm/ Evaluation of distributed source code management solutions for OpenSolaris] by Sun |
* [http://opensolaris.org/os/community/tools/scm/ Evaluation of distributed source code management solutions for OpenSolaris] by Sun |
||
* [http://www. |
* [http://www.sesp.cse.clrc.ac.uk/Publications/cvs-svn/cvs-svn.pdf Comparison of CVS and Subversion] |
||
* [http://www.sdtimes.com/link/34482 Codice includes XMerge/XDiff 2.0 in Plastic SCM release] |
|||
* [http://www.sdtimes.com/CODICE_BRANCHES_OUT_WITH_NEW_VERSION_OF_SCM_TOOL/By_Jeff_Feinman/About_CODICE_and_SCM/33960 Codice branches out with new version of SCM tool] |
|||
{{Revision control software}} |
{{Revision control software}} |
Revision as of 09:12, 5 October 2010
This article's use of external links may not follow Wikipedia's policies or guidelines. (February 2010) |
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 | 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 | Unknown |
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 | Unknown | Unknown | Unknown | Unknown | Unknown |
ClearCase | C, Java, Perl | Changeset | Namespace | O(patch) | HTTP, custom (CCFS), custom (MVFS filesystem driver) | Unknown |
Code Co-op | C++ | Changeset | User ID-Ordinal | O(patch) | e-mail (MAPI, SMTP/POP3, Gmail), LAN | Unknown |
Codeville | Python | Unknown | Unknown | Unknown | Unknown | Unknown |
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 | Unknown |
IC Manage | c++, c | Changeset | Namespace | O(patch) | custom | Unknown |
LibreSource Synchronizer | Java | Changeset | Timestamp of the repository | O(patch) | HTTP, File-System | Unknown |
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 | Unknown | Namespace | Unknown | HTTP, custom | Unknown |
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 | Unknown |
Plastic SCM | C.Java.net | Changeset | Namespace | O(revisions) | custom | Unknown |
Rational Team Concert | Java | Changeset | Namespace | O(patch) | REST services over HTTP/HTTPS | Unknown |
StarTeam | C, Java | Snapshot | MD5 hashes | O(revision) | custom, TCP/IP | Unknown |
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 | Unknown | Unknown | Unknown | Unknown |
Synergy | Java | Changeset (text), Snapshot(binary) | Namespace | O(patch) | HTTP, custom over ssh, custom | Unknown |
Team Foundation Server | C++ and C# | Changeset | Namespace | O(patch) | SOAP over HTTP or HTTPS | Unknown |
Vault | C# | Changeset | ? | O(patch) | HTTP, HTTPS | Unknown |
Visual SourceSafe | C | Snapshot | Namespace? | O(changes)? | SMB | Unknown |
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 | Unknown |
Bazaar | Yes | Yes | Yes | Yes | Yes | Partial[14] | Yes | Yes[15] | Yes | Yes | Yes |
BitKeeper | Yes | Yes | Unknown | Unknown | Unknown | Unknown | Yes | Unknown | Yes | Unknown | Unknown |
ClearCase | optional[16] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[17] | Unknown |
Code Co-op | Yes | Yes | Yes | No | limited support | No | No | No | Yes | Unknown | Unknown |
Codeville | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown |
CVS | No | No | No | No | limited support | No | No | Yes | Yes | Unknown | 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 | Unknown |
Fossil | Yes | Yes | Unknown | No | No | Yes | Yes | No | Yes | Yes | Unknown |
Git | Yes | Partial[20] | Yes [47] | Yes | Yes [48] | Yes [49] | Yes | Yes | Yes | Partial[21] | No |
GNU arch | Yes | Yes | Unknown | Yes | Yes [50] | Yes | Unknown | Unknown | Yes | Unknown | Unknown |
IC Manage | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Unknown |
LibreSource Synchronizer | Yes | Yes | Yes | No | limited support [22] | No | Yes [23] | No | Yes | Unknown | Unknown |
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 | Unknown | No | Yes | Yes | Unknown | Unknown |
Monotone | Yes | Yes | Yes | No[26] | Yes [51] | Yes, mandatory | Yes | Yes | Yes | Unknown | 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 | Unknown | Yes | No | No | Yes | Yes | Yes | Yes | Unknown |
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 | Unknown |
Synergy | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[36] |
Team Foundation Server | Yes | Yes | Yes | Unknown | Yes | Unknown | Yes | Unknown | Yes | Yes | Unknown |
Vault | Yes | Yes | Yes | No | Yes | No | No | Yes | Yes | Unknown | Unknown |
Visual SourceSafe | No | No[37] | Unknown | Yes (using shares)[38] | Yes | No | No | Unknown | Yes | Yes | Unknown |
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 | Unknown | Yes | Yes | execution bit only | Unknown | Unknown |
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 | Unknown | 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 | Unknown | N/A |
Plastic SCM | No | Yes | Yes | Yes | Template:Execution | Yes | Template:Subversion, Perforce, CVS, Sourcesafe |
SVK | Unknown | Yes[61] | Unknown | Yes | Unknown | Unknown | 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 | Unknown | Unknown |
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 | Unknown | Unknown | Unknown | Unknown | Unknown | edit | sync | add | delete | move | Unknown | resolve | submit | revert | Unknown | Unknown |
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] | Unknown | Unknown | 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 | Unknown | [missing command name] | [missing command name] | Unknown | Unknown | Unknown | Unknown | Unknown |
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 | 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 | Apollo Computer in DSEE during the 1980s. The most recent version is 7.1.1, released in Dec 2009. | Developed beginning in 1990 by Atria Software, following concepts developed byIBM, Alcatel-Lucent, Cisco, Motorola, Siemens, Ericsson, Nokia and other large organizations worldwide[citation needed] |
Code Co-op | 1997 [61], released soon after. | The first distributed VCS, demoed inClients include: Logitech, HP, Ericsson[citation needed] |
CVS | RCS | First publicly released July 3, 1986; based onthousands of organizations worldwide[citation needed] |
CVSNT | 1998; based on CVS. Started by CVS developers with the goal adding support for a wider range of development methods and processes. | First publicly released? |
darcs | First announced on April 9, 2003 | GHC, Mnet, xmonad, Projects Using Darcs |
Fossil | Fossil and SQLite have used Fossil since 21 July 2007. | SQLite, Fossil |
Git | Linus Torvalds in April 2005, following the BitKeeper controversy.[86] | Started byLinux 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 | GNU project. Lord resigned as maintainer in August 2005. | Started by Tom Lord, it later became part of theavailable for GNU Savannah and Gna.org projects |
IC Manage | Developed by IC Manage, Inc which was founded in 2003 by Shiv Sikand and Dean Drako. | many organizations worldwide [63] |
LibreSource Synchronizer | First publicly released on June 13, 2005 | Most of the LibreSource Community |
Mercurial | BitKeeper controversy.[86] First released on April 19, 2005 | Started April 6, 2005 by Matt Mackall, following theMozilla, NetBeans, Xine, Xen, OpenJDK, OpenOffice.org, OpenSolaris, wmii, MoinMoin, Linux-HA, Python[87] (Also see list of projects using Mercurial) |
Monotone | First released in April 2003 | CTWM, Pidgin, Xaraya [64] |
Perforce | Developed by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald. | many organizations worldwide [65], FreeBSD[66] |
Plastic SCM | 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 | Version 1.0 released on June, 2008 | IBM |
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 | as the POSIX source-control tool, SCCS is widely available on UNIX platforms. Sun WorkShop TeamWare uses SCCS files. | |
StarTeam | [67]; Developed by StarBase software, acquired by Borland(which was acquired by Micro Focus). | Version 1.0 1995Borland, BT, Cintas, EDS, Kaiser Permanente, Met Office, Quest Software, Raymond James, Siemens, and many more globally distributed companies [68] |
Subversion | CVS developers with goal of replacing CVS | Started in 2000 byASF, 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 | 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. | Authored byRequest 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 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 | 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.
See also
References
- ^ Bazaar is a Distributed version control system but it can also be used in a centralized manner using lock step development and checkouts.
- ^ 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.
- ^ "a workspace can be synchronized with more than one LibreSource Synchronizer. As a limitation, the network must have tree topology." says LibreSource Synchronizer.
- ^ As of version 2.5, "LibreSource is now released under GPL Version 2".
- ^ Plastic SCM Pricing [1]
- ^ SVK allows Subversion to have Distributed branches.
- ^ 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.
- ^ "The Future of SVK". May 28, 2009. Retrieved June 6, 2009.
- ^ 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.
- ^ A Bazaar bundle is a summary diff, with sufficient extra information to preserve history.
- ^ Mercurial revision numbers are local to a repository; they can differ from repository to repository depending on in which order merges are performed.
- ^ "Mercurial 0.5b vs git". overview of performance/scalability. Retrieved 2006-12-05.
- ^ 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.
- ^ They can be automatically generated [2] and manually verified, but verification is not automatic
- ^ EOL conversions are supported since bzr 1.14
- ^ ClearCase 7.1.1 release notes
- ^ Support Policy for National Languages and ClearCase
- ^ [3]
- ^ darcs' patches each bear a unique identifier, impossible to merge twice the same patch in a repository (without destructively modifying history using "unsafe" commands).
- ^ Git does not explicitly track renames. Renames are detected after the fact, if the file content does not change dramatically.
- ^ Git itself is not internationalized, just git-gui and gitk (both are shipped with git).
- ^ Its possible to embed the action in a shell or Ant script.
- ^ A merged is tracked by its workspace origin.
- ^ Mercurial versions 0.9.4 and higher support symlinks.
- ^ Mercurial is in the process of being translated to at least dutch and chinese
- ^ It could be done via user level hooks
- ^ Perforce Knowledge Base: Renaming Files
- ^ What makes Plastic SCM different? [4]
- ^ Through the procees behaviour components: Operation advisors and Operation participants. http://jazz.net/library/article/292
- ^ StarTeam supports atomic commits as of version 2006
- ^ Subversion can move a file and conserve its history, if and only if the target of the move is in the same Subversion repository as the source. Cross-repository moves require third-party tools such as svk. Also, a rename operation is actually a copy-with-history-and-delete sequence.
- ^ New to SVN 1.5 ([5]). A separate tool "svnmerge" ([6]) provides merge tracking for older versions.
- ^ In Subversion, tags are a special case of the more generic "cheap copy" concept of Subversion. Per convention, a tag is a copy into a directory named "tags". Because of this, even tags are versioned. See [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.
- ^ Uses subversion server
- ^ Signature - SVK Wiki
- ^ in Asian releases, v6.6a to v7.1a
- ^ Version change history is removed upon rename; old name not referenced.
- ^ Note that VSS Shares do not support anything like actual Unix symbolic links
- ^ Bazaar keywords plugin
- ^ Bazaar interactive plugin
- ^ Bazaar Externals plugin
- ^ bzr-svn
- ^ bzr-git
- ^ bzr-hg
- ^ IBM Rational ClearCase: The ten best triggers
- ^ Using alias of the CVSROOT/modules file.
- ^ CVS records executable bit when a file is added, but does not allow changing it later on.
- ^ Darcs can do sparse checkouts from explicit checkpoints on darcs-1 repositories, but not from darcs-2 ones[citation needed]
- ^ Darcs can automatically detect #! scripts and make them executable on checkout.
- ^ The Git FAQ states that keyword expansion is not a good thing
- ^ add -i and add -p, see git-add(1) Manual Page
- ^ git-submodule(1) Manual Page
- ^ The Git Community Handbook clearly explains that "Git does not allow partial checkouts"
- ^ The Git FAQ explains why preserving modification time is considered harmful
- ^ Mercurial KeywordExtension page
- ^ Mercurial RecordExtension page
- ^ hgforest repository
- ^ hgsubversion page
- ^ Hg-Git Mercurial Plugin
- ^ Mercurial ConvertExtension page
- ^ commit --interactive, see SVK::Command::Commit
- ^ Keyword Substitution
- ^ Externals Definitions
- ^ SVN records file permissions when a file is added, but does not allow changing them later on.
- ^ Disabled by default.
- ^ bzr-local-branches plugin
- ^ rebase plugin
- ^ darcs doesn't have named branches, local or not, branching is handled solely through repository cloning
- ^ darcs send prepares a bundle of patches, defaults to sending it by mail but can send it to a file instead
- ^ darcs' patch-based model doesn't distinguish between merge and rebase -- both are the same operation
- ^ pull is fetch plus merge.
- ^ copies are detected after the fact, much like renames
- ^ Mercurial Bookmarks are similar to local branches, with some limitations.
- ^ Mercurial rebase extension project's page
- ^ 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
- ^ 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)
- ^ git stash is a multi-level shelve, it's possible to shelve several change groups at the same time
- ^ Mercurial Shelve extension page
- ^ Mercurial Transplant extension page
- ^ Only works on a local repository and only on revisions without children. The disapprove command might be an alternative.
- ^ svk status lists differences between working copy and repository, not differences between two repositories
- ^ Using the free third-party tool svn-bisect
- ^ svn status lists differences between working copy and repository, not differences between two repositories
- ^ Any OS that support a Java Virtual Machine 1.5
- ^ hgweb for single-repository access and hgwebdir for multiple repository access from a single HTTP address
- ^ a b Towards A Better SCM: Revlogs and Mercurial, presented by Matt Mackall to the Ottawa Linux Symposium, July 2006
- ^ transition ongoing
External links
- Comparison between Git and Mercurial by Google (summer 2008)
- Comments on Open Source Software / Free Software SCM systems by David A. Wheeler
- Quick Reference Guide to Free Software Decentralized Revision Control Systems by Zooko Wilcox-O'Hearn
- Comparison of commercial Version Control Systems from the creators of Code Co-op
- Version Control System Comparison from better-scm.berlios.de
- Evaluation of distributed source code management solutions for OpenSolaris by Sun
- Comparison of CVS and Subversion
- Codice includes XMerge/XDiff 2.0 in Plastic SCM release
- Codice branches out with new version of SCM tool