Comparison of version control software
From Infogalactic: the planetary knowledge core
(Redirected from Comparison of revision control software)
-
This is a dynamic list and may never be able to satisfy particular standards for completeness. You can help by expanding it with reliably sourced entries.
Lua error in package.lua at line 80: module 'strict' not found. The following is a comparison of version control software. The following tables include general and technical information on notable version control and software configuration management (SCM) software. For SCM software not suitable for source code, see Comparison of open source configuration management software.
Contents
General information
Table explanation
- 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.
Software | Maintainer | Development status | Repository model | Concurrency model | License | Platforms supported | Cost |
---|---|---|---|---|---|---|---|
AccuRev SCM | Micro Focus International | Active | Client–server | Merge or lock | Proprietary | Most Java Platforms (Unix-like, Windows, OS X) | Non-free Quoted on an individual basis. $350 /seat |
GNU Bazaar | Canonical Ltd. | Active | Distributed and Client–server | Merge | GNU GPL | Unix-like, Windows, OS X | Free |
BitKeeper | BitMover Inc. | Active | Distributed | Merge | Apache | Unix-like, Windows, OS X | Free |
ClearCase | IBM Rational | Active | Client–server | Merge or lock[nb 1] | Proprietary | Linux, Windows, AIX, Solaris, HP UX, i5/OS, OS/390, z/OS, | Non-free $4600 per floating license (held automatically for 30-minutes minimum per user, can be surrendered manually) |
Code Co-op | Reliable Software | Active | Distributed | Merge | Proprietary | Windows | Non-free $150 per seat |
Codeville | Ross Cohen | official site offline; latest release July 13, 2007 | Distributed | precise codeville merge | BSD | Unix-like, Windows, OS X | Free |
CVS | The CVS Team[1] | maintained but new features not added | Client–server | Merge | GNU GPL | Unix-like, Windows, OS X | Free |
CVSNT | March Hare Software[2] and community members | maintained and new features under development | Client–server | Merge or lock | GPL or proprietary | Unix-like, Windows, OS X, i5/OS | Free (with £425 distribution fee) for older version or £85 commercial license for latest version of CVS Suite or Change Management Server |
darcs | The Darcs team | Active | Distributed | Merge | GNU GPL | Unix-like, Windows, OS X | Free |
Dimensions CM | Serena Software | Active | Client–server | Merge or lock | Proprietary | Windows, Linux, Solaris, AIX, HP UX, z/OS | Non-free |
Endevor | CA Technologies[3] | Active | Client-server | Merge or Lock | Proprietary | z/OS | Non-free |
Fossil | D. Richard Hipp | Active | Distributed | Merge | BSD | POSIX, Windows, OS X, Other | Free |
Git | Junio Hamano | Active | Distributed | Merge | GNU GPL | POSIX, Windows, OS X | Free |
GNU arch | Andy Tai | unmaintained | Distributed | Merge | GNU GPL | Unix-like, Windows, OS X | Free |
IC Manage | IC Manage Inc. | Active | Client–server | Merge or lock | Proprietary | Unix-like, Windows, OS X | Non-free Commercial |
MKS Integrity | Integrity, a PTC Company | Active | Client–server | Merge or lock | Proprietary | Unix-like, Windows | Non-free |
Mercurial | Matt Mackall | Active | Distributed | Merge | GNU GPL | Unix-like, Windows, OS X | Free |
Monotone | Nathaniel Smith, Graydon Hoare | Active | Distributed | Merge | GNU GPL | Unix-like, Windows, OS X | Free |
Perforce | Perforce Software Inc. | Active | Client–server | Merge or lock | Proprietary | Unix-like, Windows, OS X | Cost free license, available on application, for OSS or educational use; Also free for up to 20 users, 20 workspaces, and unlimited files;[4] Or free for unlimited users and up to 1,000 files; Else $740–$900 per seat in perpetuity, or $144–$300 per seat per year on a subscription model, both with volume discounts[5] |
Plastic SCM | Codice Software | Active | Client–server | Merge or lock | Proprietary | Linux, Windows, OS X | Free for up to 15 users; else starting at $595 per seat, or $3,500 per 25 developers per year[6] |
PVCS | Serena Software | Active | Client–server | Lock | Proprietary | Windows, Unix-like | Non-free |
Rational Team Concert | IBM Rational | Active | Client–server[nb 2][7][8] | Merge or lock | Proprietary | Linux, Windows, AIX, Solaris, HP UX, i5/OS, OS/390, z/OS, OS X | Free for up to 10 users; else non-free |
Revision Control System | Thien-Thi Nguyen | Active | local | Merge or lock | GNU GPL | Unix-like | Free |
SCM Anywhere | Dynamsoft Corporation | Active | Client–server | Merge or Lock | Proprietary | Unix-like, Windows, OS X | Non-free Single user free; $299 per user, bulk discount available |
Source Code Control System | Jörg Schilling[nb 3] | Active | local | lock[nb 4] | CDDL / proprietary[nb 5] | Unix-like, Windows, OS X | While SCCS has traditionally been bundled in commercial UNIX distributions, free CDDL-licensed versions exist |
StarTeam | Borland (Micro Focus) | Active | Client–server | Merge or lock | Proprietary | Windows and Cross-platform via Java based client | Non-free Quoted on an individual basis. |
Subversion (SVN) | Apache Software Foundation[9] | Active | Client–server[nb 6] | Merge or lock[nb 7] | Apache | Unix-like, Windows, OS X | Free |
Surround SCM | Seapine Software | Active | Client–server | Merge or lock | Proprietary | Linux, Windows, OS X | Non-free $595 per named user; $29/month subscription |
SVK | Best Practical | unmaintained | Client–server, decentralized | Merge | Artistic/GPL | Unix-like, Windows, OS X | Free |
Team Foundation Server (TFS) | Microsoft | Active | Client–server, Distributed | Merge or lock | Proprietary | Windows, cross-platform via Visual Studio Team Services | Free for up to 5 users in the Visual Studio Team Services or for open source projects through codeplex.com; else non-free, licensed through MSDN subscription or direct buy. |
Synergy | IBM Rational | Active | Client–server and Distributed | Merge or lock | Proprietary | Linux, Windows, Unix-like | Non-free Contact IBM Rational[10] |
Vault | SourceGear LLC | Active | Client–server | Merge or lock | Proprietary | Unix-like, Linux, Windows | Non-free $300 per user |
Veracity | SourceGear LLC | web site appears unmaintained; latest release March 25, 2013 | Distributed | Merge or lock | Apache | Unix-like, Linux, Windows | Free |
Vesta | Kenneth Schalk; Tim Mann,[11][12] | web site not updated since 2006; latest release February 15, 2009 | Distributed NFS-protocol-emulation choice to optionally confederate clients and/or servers | lock on branch; merge branch-to-branch | LGPL | Tru64, Linux | Free |
Visual SourceSafe (VSS) | 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 |
Technical information
Table explanation
- Software: The name of the application that is described.
- Programming language: The coding language in which the application is being developed
- Storage Method: Describes the form in which files are stored in the repository. A snapshot indicates that a committed file(s) is stored in its entirety—usually compressed. A changeset, in this context, indicates that a committed file(s) is stored in the form of a difference between either the previous version or the next.
- Scope of change: Describes whether changes are recorded for individual files or for entire directory trees.
- Revision IDs: are used internally to identify specific versions of files in the repository. Systems may use pseudorandom identifiers, content hashes of revisions, or filenames with sequential version numbers (namespace). With Integrated Difference, revisions are based on the Changesets themselves, which can describe changes to more than one file.
- Network protocols: lists the protocols used for synchronization of changes.
- Source code size: Gives the size of the source code in megabytes.
Software | Programming language | Storage method | Scope of change | Revision IDs | Network protocols | Source code size |
---|---|---|---|---|---|---|
AccuRev SCM | C++, Java | Changeset | File | Number pair NN/NN | custom | Unknown |
GNU Bazaar | Python, Pyrex, C[nb 8] | Snapshot | Tree | Pseudorandom | custom, custom over ssh, custom over HTTP, HTTP, SFTP, FTP, email bundles,[nb 9] WebDAV (with plugin) | 4.1 MB |
BitKeeper | C | Changeset | Tree | Changeset keys, numbers | custom, HTTP, rsh, ssh, email | 99 MB |
CA Software Change Manager | C, C++, Java, HTML | Changeset and Snapshot | File and Tree[citation needed] | Numbers | HTTP, TCP/IP | Unknown |
ClearCase | C, Java, Perl | Changeset | File and Tree [13] | Numbers | custom (CCFS), custom (MVFS filesystem driver), HTTP | Unknown |
Code Co-op | C++ | Changeset | Unknown | User ID-Ordinal | e-mail (MAPI, SMTP/POP3, Gmail), LAN | Unknown |
Codeville | Python | Unknown | Unknown | Unknown | Unknown | Unknown |
CVS | C | Changeset | File | Numbers | pserver, ssh | 3.3 MB |
CVSNT | C++ | Changeset | File and Tree[14] | Numbers | custom over ssh, sspi, sserver, gserver, pserver | 55 MB |
darcs | Haskell | Changeset (Patch)[nb 10] | Tree | n/a | custom over ssh, HTTP, email | 1.7 MB |
Dimensions CM | C, C++, Java, C# | Snapshot or changeset | File and Tree | Numbers | Custom, HTTP/HTTPS | Unknown |
Fossil | C | Snapshot | Tree | SHA-1 hashes | HTTP/HTTPS, custom over ssh | 7.2 MB[nb 11] |
Git | C, shell scripts, Perl | Snapshot | Tree | SHA-1 hashes | custom (git), custom over ssh,[15] HTTP/HTTPS, rsync, email, bundles | 22 MB |
GNU arch | C, shell scripts | Changeset | Tree | Numbers | HTTP, WebDAV | Unknown |
IC Manage | C++, C | Changeset | Unknown | Numbers | custom | Unknown |
Mercurial | Python, C | Changeset | Tree | Numbers,[nb 12] SHA-1 hashes | custom over ssh, HTTP, email bundles (with standard plugin) | 20 MB |
MKS Integrity | C, Java | Changeset | File | Numbers | custom, HTTP | Unknown |
Monotone | C++ | Hybrid[nb 13] | Tree | SHA-1 hashes | custom (netsync), custom over ssh, file system | 4.4 MB |
Perforce | C++, C, LabVIEW | Changeset | Tree | Numbers | custom | Unknown |
PVCS | C++, C | Changeset | File | Numbers | Unknown | Unknown |
Rational Team Concert | Java | Changeset | Tree | Numbers | REST services over HTTP/HTTPS | Unknown |
Revision Control System | C | Changeset | File | Numbers | File system | 5.3 MB |
SCM Anywhere | C++, Java, C# | Changeset | File and Tree | Numbers | SOAP over HTTP or HTTPS | Unknown |
Source Code Control System | C | Changeset | File | Numbers | NFS | 1.3 MB |
StarTeam | C++, C, Java | Snapshot | File and Tree | MD5 hashes | custom, TCP/IP | Unknown |
Subversion | C | Changeset and Snapshot | Tree | Numbers | custom (svn), custom over ssh, HTTP and SSL (using WebDAV) | 5.2 MB |
Surround SCM | C++ | Changeset | File and Tree | Numbers | TCP/IP | Unknown |
SVK | Perl | Changeset | Tree | Numbers | Unknown | Unknown |
Synergy | Java | Changeset (text), Snapshot(binary) | File | Numbers | custom, custom over ssh, HTTP | Unknown |
Team Foundation Server | C++ and C# | Changeset | File and Tree | Numbers | SOAP over HTTP or HTTPS | Unknown |
Vault | C# | Changeset | File and Tree | Numbers | HTTP, HTTPS | Unknown |
Veracity | C, JavaScript | Changeset | Tree | Numbers, [nb 14] SHA-1, SHA-2 and Skein hashes. | HTTP | 52 MB |
Vesta | C++ | Snapshot | Tree | Unknown | NFS | 15.8 MB |
Visual SourceSafe | C | Snapshot | File | Numbers | SMB, DCOM | Unknown |
Software | Programming language | Storage method | Scope of change | Revision IDs | Network protocols | Source code size |
Features
Table explanation
- Software: The name of the application that is described.
- Atomic commits: refers to a guarantee that all changes are made, or that no change at all will be made.
- File renames: describes whether a system allows files to be renamed while retaining their version history.
- Merge file renames: describes whether a system can merge changes made to a file on one branch into the same file that has been renamed on another branch (or vice versa). If the same file has been renamed on both branches then there is a rename conflict that the user must resolve.
- Symbolic links: describes whether a system allows revision control of symbolic links as with regular files. Versioning symbolic links is considered by some people a feature and some people a security breach (e.g., a symbolic link to /etc/passwd). Symbolic links are only supported on select platforms, depending on the software.
- Pre-/post-event hooks: indicates the capability to trigger commands before or after an action, such as a commit, takes place.
- Signed revisions: refers to integrated digital signing of revisions, in a format such as OpenPGP.
- Merge tracking: describes whether a system remembers what changes have been merged between which branches and only merges the changes that are missing when merging one branch into another.
- End of line conversions: describes whether a system can adapt the end of line characters for text files such that they match the end of line style for the operating system under which it is used. The granularity of control varies. Subversion, for example, can be configured to handle EOLs differently according to the file type, whereas Perforce converts all text files according to a single, per-client setting.
- Tags: indicates if meaningful names can be given to specific revisions, regardless of whether these names are called tags or labels.
- International support: indicates if the software has support for multiple language environments and operating system
- Unicode filename support: indicates if the software has support for interoperations under file systems using different character encodings.
- Supports large repos: Can the system handle repositories of around a gigabyte or larger effectively?
Software | Atomic commits | File renames | Merge file renames | Symbolic links | Pre-/post-event hooks | Signed revisions | Merge tracking | End of line conversions | Tags | International support | Unicode filename support | Supports large repos |
---|---|---|---|---|---|---|---|---|---|---|---|---|
AccuRev SCM | Yes | Yes | Partial[nb 15] | Yes | Yes | Yes | Yes | Yes | N/A | Yes | Yes[16] | Yes[17][18] |
GNU Bazaar | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[19] | Yes | Yes | Yes | Unknown |
BitKeeper | Yes | Yes | Yes | Yes | Yes | Unknown | Yes | Yes | Yes | Unknown | Unknown | Yes |
CA Software Change Manager | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Unknown |
ClearCase | Partial[nb 16] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[20] | Unknown | Yes |
Code Co-op | Yes | Yes | Yes | No | Partial | No | No | No | Yes | Unknown | Unknown | Unknown |
Codeville | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown |
CVS | No | No | No | No | Partial | No | No | Yes | Yes | Unknown | No | Yes |
CVSNT | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes |
darcs | Yes | Yes | Yes | No[nb 17] | Yes | Yes | N/A[nb 18] | No | Yes | No | Yes[nb 19] | Unknown |
Dimensions CM | Yes | Yes | Yes | No | Yes | Unknown | Yes | Yes | Yes [nb 20] | No [nb 21] | Yes | Yes |
Fossil | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes[nb 22] | Yes | Yes | Yes | Unknown |
Git | Yes | Partial[nb 23] | Yes | Yes | Yes | Yes[nb 24] | Yes | Yes | Yes | Yes | Yes[nb 25] | Partial[nb 26] |
GNU arch | Yes | Yes | Unknown | Yes | Yes | Yes | Unknown | Unknown | Yes | Unknown | Unknown | Unknown |
IC Manage | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Unknown | Unknown |
MKS Integrity | Yes | Yes | Yes | No | Yes | Yes[nb 27] | Yes[nb 28] | Yes | Yes | Yes | Yes | Unknown |
Mercurial | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[nb 29] | Partial[nb 30] | Partial[21] |
Monotone | Yes | Yes | Yes | No[nb 31] | Yes | Yes, mandatory | Yes | Yes | Yes | Unknown | Yes | Unknown |
Perforce | Yes | Yes[22] | Yes[23] | Partial[nb 32] | Yes | Yes | Yes[24] | Yes | Yes | Yes[25] | Yes[26] | Yes |
Rational Team Concert | Yes | Yes | Yes | Yes | Yes[nb 33] | Yes | Yes | Yes | Yes | Yes | Yes | Unknown |
Source Code Control System | Yes | No | N/A | N/A | No | No | Yes | No | No | Partial[nb 34] | Yes | Yes |
StarTeam | Yes[nb 35] | Yes | Unknown | Yes | No | No | Yes | Yes | Yes | Yes | Unknown | Yes |
Subversion | Yes | Yes[nb 36] | Partial[nb 37] | Yes | Yes | No | Yes.[nb 38] | Yes | Partial[nb 39] | Yes | Yes | Yes |
Surround SCM | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[27] | Yes | Yes | Yes |
SVK | Yes | Yes | Yes | Yes | Yes[nb 40] | Yes[28] | Yes | Yes | Yes | Yes | Unknown | Unknown |
Synergy | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[nb 41] | Yes |
Team Foundation Server | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Vault | Yes | Yes | Yes | No | Yes | No | No | Yes | Yes | Unknown | Unknown | Unknown |
Veracity | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes |
Vesta | Yes | Yes | Unknown | Unknown | Yes | No | No | No | Yes | No | Unknown | Yes |
Visual SourceSafe | No | No[nb 42] | Unknown | No | Yes | No | No | Unknown | Yes | 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 | Supports large repos |
Advanced features
Table explanation
- keyword expansion: Supports automatic expansion of keywords such as file revision number.
- 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.
- external references: embedding of foreign repositories in the source tree
- partial checkout/clone: Ability to check out or clone only a specified subdirectory from a repository.
- permissions: Tracks file permission bits in the revision history.
- timestamp preservation: Overwrites the last modified filesystem attribute with the commit time upon checkout.
- custom automatic merge tool: Automatic merging can be attempted by any tool of the user's choice (hopefully configurable on a per-file basis)
- supported formats: either read/write support or read-only (conversion, potentially repeated)
- shared build cache of derived objects: the ability to wink-in derived-objects that were built by other confederated clients that share exactly the same dependencies instead of rebuilding them locally
Software | Keyword expansion | Interactive commits | External references | Partial checkout/clone | Permissions | Timestamp preservation | Custom automatic merge tool | Supported formats | Shared build cache of derived objects |
---|---|---|---|---|---|---|---|---|---|
AccuRev SCM | Yes | Unknown | Yes | Yes | execution bit only | Yes | Yes | git (bi-dir)[29] | No |
GNU Bazaar | Yes[30] | Yes[31] | Yes[32] | No | execution bit only | No[nb 43] | Yes[33] | bzr, subversion,[34] git,[35] hg,[36] any that has a fastexporter | No |
BitKeeper | POSIX and RCS | Yes | Yes | Yes | Yes | Yes | Yes | bitkeeper | No |
CA Software Change Manager | No | Yes | No | Yes | execution bit only | Yes | Yes | CA Software Change Manager | No |
ClearCase | Yes[37] | No | No | Yes | Yes | Yes[nb 44] | Yes | ClearCase | Yes |
CVS | RCS | No | Yes | Yes[nb 45] | Partial[nb 46] | Yes | No | cvs | No |
CVSNT | RCS | Yes[nb 47] | Yes[nb 48] | Yes[nb 49] | Yes | Yes | No | cvs | Yes[nb 50] |
darcs | No | Yes | No | No[nb 51] | Partial[nb 52] | No | conflicts only | darcs | No |
Dimensions CM | Yes | No | Yes[nb 53] | Yes | Yes | Yes | Yes | Migration from ClearCase, Subversion, CVS, PVCS, ChangeMan DS | Unknown |
Fossil | No | Yes | Yes[nb 54] | No | execution bit only[38] | No | No | fossil (uses sqlite), any that has a fastexporter[39] | No |
Git | No[nb 55] | Yes[nb 56] | Yes[40] | Yes[41] | execution bit only | No[nb 57] | Yes | git, cvs, subversion, hg, any that has a fastexporter | No |
Mercurial | Yes[42] | Yes[43] | Yes[44] | Partial[45] | execution bit only | through (alpha) extension[46] | non-trivial cases only | hg, subversion,[47] git,[48] any other format supported by the Convert extension[49] | No |
Perforce | Yes[50] | No | No | Yes | Yes | Yes[51] | Yes[52] | Perforce | No |
Rational Team Concert | No | Yes | Yes | Yes | Yes | Unknown | Unknown | N/A | No |
Source Code Control System | Yes | No | N/A | Yes | execution bit only | some variants | No | rcs | No |
Surround SCM | Yes | No | No | Yes | No | Yes | Yes[nb 58] | Surround | No |
SVK | Yes | Yes[nb 59] | Unknown | Yes | Unknown | Unknown | Unknown | subversion | No |
Subversion | Yes[53] | Partial[nb 60] | Yes[54] | Yes | execution bit only | Partial[nb 61] | Yes[nb 62] | subversion | No |
Team Foundation Server | No | Yes | Unknown | Yes | Yes | Unknown | Yes | Unknown | Unknown |
Veracity | No | No | No | No | Yes | Yes | Yes | git, cvs, subversion, hg, any that has a fastexporter | No |
Vesta | No | No | Yes via SDL | No | Unknown | Yes | No | Vesta | Yes |
Visual SourceSafe | Yes | Unknown | Unknown | Yes | Yes | Unknown | Yes | Unknown | No |
Software | Keyword expansion | Interactive commits | External references | Partial checkout/clone | Permissions | Timestamp preservation | Custom automatic merge tool | Supported formats | Shared build cache of derived objects |
Basic commands
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
- lock: Lock files in a repository from being changed by other users
- add: Mark specified files to be added to repository at next commit
- remove: Mark specified files to be removed at next commit (note: keeps cohesive revision history of before and at the remove.)
- move: Mark specified files to be moved to a new location at next commit
- copy: Mark specified files to be copied at next commit
- merge: Apply the differences between two sources to a working copy path
- commit: Record changes in the repository
- revert: Restore working copy file from repository
- generate bundle file: Create a file that contains a compressed set of changes to a given repository
- rebase: Forward-port local commits to the updated upstream head
Software | Repository init | clone | pull | push | Local branches | checkout | update | lock | add | remove | move | copy | merge | commit | revert | generate bundle file | rebase |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AccuRev SCM | mkdepot | N/A | N/A | N/A | mkstream | mkws | update | anchor | add | defunct | move | cp [then] add / incl -s / ln | merge | keep / promote | purge / revert | N/A | chstream |
GNU Bazaar | init / init --no-tree[nb 63] / init-repo / init-repo --no-trees[nb 64] | branch / branch --no-tree[nb 65] | pull | push | init / branch | checkout / checkout --lightweight[nb 66] | update | N/A | add | rm | mv | N/A | merge | commit | revert | send | rebase[nb 67] |
BitKeeper | setup | clone | pull | push | clone | co | pull | Unknown | add | rm | mv | cp | pull | commit | undo | makepatch | collapse |
ClearCase | init | N/A | N/A | N/A | N/A | checkout | update | lock / unlock | mkelem | rmname | mv | N/A | merge | checkin | uncheckout / rmver | N/A | findmerge |
CVS | init | N/A | N/A | N/A | N/A | checkout | update | Unknown | add | rm | N/A | N/A | update -j | commit | remove [then] update | N/A | N/A |
CVSNT | init | N/A | N/A | N/A | N/A | checkout | update | edit | add | rm | rename | N/A | update -j | commit | update -C | N/A | N/A |
darcs | init | clone | pull | push | N/A[nb 68] | clone | pull | Unknown | add | remove | move | N/A | pull / push | record | revert | send -o[nb 69] | rebase |
Fossil | new / open | clone | pull | push | branch / commit --branch | clone/open | update | N/A | add | rm/del | mv/rename | N/A | merge | commit | revert | Fossil's repository is single sqlite file itself | N/A |
Git | init / init --bare | clone / clone --bare | fetch[nb 70] | push | branch | checkout | pull | N/A | add | rm | mv | cp [then] git add[nb 71] | merge | commit | revert | bundle | rebase |
Mercurial | init | clone | pull | push | bookmark[nb 72] | clone | pull -u | N/A | add | rm | mv | copy | merge | commit | revert | bundle | rebase[55] |
Monotone | init | clone | pull | push | N/A | checkout | update | Unknown | add | drop | rename | N/A | merge | commit | revert | N/A | N/A |
Perforce | p4 client && p4 sync | p4 sync | p4 sync | p4 submit | Requires migration to recent streams feature | edit | sync | lock / unlock | add | delete | move | copy | integrate | submit | revert | Unknown | N/A |
SVK | svk depotmap [or] svnadmin create) | mirror | pull | push | copy | checkout | update | Unknown | add | rm | mv | cp | merge | commit | revert | N/A | smerge -I |
Subversion | svnadmin create | svnadmin hotcopy | [work-around]: svnadmin load | [work-around]: svnadmin dump | N/A | checkout / co | update / up | lock | add | delete / del / remove / rm | move / mv / rename / ren | copy / cp | merge | commit / ci | revert | N/A | N/A |
Surround SCM | mkmainline | N/A | N/A | N/A | mkbranch | checkout | get | checkout | add | rm | move | N/A | merge | checkin | voidcheckout | N/A | rebase |
Veracity | repo init | clone | pull | push | branch | checkout | pull -u | lock | add | rm | mv | N/A | merge | commit | revert | N/A | N/A |
Vesta | vcreate | vrepl | vrepl | vrepl | N/A | vcheckout | vadvance | vcheckout | [… then] vcheckin[nb 73] | vrm | mv [then] vcheckin[nb 74] | cp [then] vcheckin[nb 75] | vdiff | vcheckin | vcheckin -c 0 | vmake [or] vesta | vadvance |
Visual SourceSafe | ? | Unknown | Unknown | Unknown | N/A | Get Latest | Get Latest | Check Out | Add Files | Delete | ? | Unknown | ? | Check In | Undo Check Out | Unknown | Unknown |
Software | Repository init | clone | pull | push | Local branches | checkout | update | lock | add | remove | move | copy | merge | commit | revert | generate bundle file | rebase |
Advanced commands
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 source history for a change that introduced or fixed a regression
- incoming/outgoing: query the differences between the local repository and a remote one (the patches that would be fetched/sent on a pull/push)
- grep: search repository for lines matching a pattern
- record: include only some changes to a file in a commit and not others
Software | Command aliases | Lock/unlock | Shelve/unshelve | Rollback | Cherry-picking | Bisect | Incoming/outgoing | Grep | Record |
---|---|---|---|---|---|---|---|---|---|
AccuRev SCM | No | enable file locking | No | revert / purge | promote | No | No | No | Unknown |
GNU Bazaar | [in '.bazaar/bazaar.conf' file] | No | shelve/unshelve | uncommit | merge (non-tracking) | bisect (bisect plugin) | missing --theirs-only/missing --mine-only | grep (grep plugin) | No |
BitKeeper | Unknown | Unknown | park/unpark | undo | Unknown | bisect | changes -R/-L | grep | Unknown |
CVSNT | [in '.cvsrc' file] | edit -x/unedit[nb 76] | No | admin -o[nb 77] | yes[nb 78] | annotate[nb 79] | No | no[56] | No |
Darcs | No | No | revert/unrevert | unrecord | yes[nb 80] | test --bisect | pull/push --dry-run | No | record |
Fossil | No | No | stash pop/stash apply[nb 81] | merge --rollback | merge --cherrypick | bisect | No | search | No |
Git | [in '.gitconfig' file] | No | stash/stash pop[nb 82] | reset HEAD^ | cherry-pick | bisect | cherry | grep | add -p |
Mercurial | [in '.hgrc' file] | No | shelve/unshelve (bundled extension[57]) | strip (bundled extension[58]) | graft(core[59]) or transplant(bundled extension[60]) | bisect | incoming/outgoing | grep | record (bundled extension[61]) |
Monotone | [in monotonerc] | No | No | kill_rev_locally[nb 83] | pluck | bisect | No | No | Unknown |
Perforce | via broker[62] | lock/unlock | shelve/unshelve | obliterate | integ[63] | Unknown | Unknown | grep | Unknown |
SVK | No | No | No | No | svk merge | No | status[nb 84] | No | No |
Subversion | No | lock/unlock | No | No | svnmerge cherry-picking | Third party tool[nb 85] | status -u[nb 86] | No | No |
Surround SCM | No | checkout | shelf | rollback | duplicatechanges | No | diff | search | No |
Team Foundation Server | Yes | lock/unlock | shelve/unshelve | rollback | merge | No | Unknown | Unknown | No |
Veracity | No | lock/unlock [nb 87] | No | No | No | No | incoming/outgoing | No | No |
Software | Command aliases | Lock/unlock | Shelve/unshelve | Rollback | Cherry-picking | Bisect | Incoming/outgoing | Grep | Record |
User interfaces
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.
Software | Web interfaces | Stand-alone GUIs | Integration and/or Plug-ins for IDEs |
---|---|---|---|
AccuRev SCM | Yes | Windows (incl. Explorer integration), Linux, Unix, OS X, BeOS available | IntelliJ IDEA, Eclipse, Visual Studio |
GNU Bazaar | can use a plain webserver | Olive, bzr-gtk (GTK+), Bazaar Explorer (Qt), QBzr (Qt), TortoiseBzr (Windows) | Eclipse (BzrEclipse, QBzrEclipse), Visual Studio (bzr-visualstudio), TextMate (TextMateBundle), Komodo IDE |
BitKeeper | included | included (bkd) | Unknown |
CA Software Change Manager | included | Eclipse-based GUI | Eclipse, MS Visual Studio |
ClearCase | included, Clearcase Web Interface | older: MS Windows native, Motif-based GUI for Unix-like systems, TSO client for z/OS. | Emacs, Eclipse ( IBM Proprietary, Eclipse-CCase ), Visual Studio (IBM proprietary), KDevelop (standard?), IntelliJ IDEA (standard in Ultimate Edition) |
Code Co-op | Not necessary since entire project is replicated locally | Windows | Unknown |
CVS | cvsweb, ViewVC, others | TortoiseCVS, TkCVS (Tcl/Tk), (Windows Explorer), WinCVS, OS X, GTK, Qt available | Eclipse (Team), KDevelop (standard), IntelliJ IDEA (standard in Community and Ultimate Editions), Emacs (standard VC), Komodo IDE, BBEdit |
CVSNT | cvsweb, ViewVC, others | Windows, 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), OS X (alpha), | Eclipse (eclipsedarcs), Emacs (vc-darcs.el) |
Dimensions CM | Yes | Windows (incl. explorer integration) | Eclipse, Visual Studio, IntelliJ IDEA, XCode, Powerbuilder |
Fossil | Embedded webserver included (ui/server mode), ability to run multiple repositories via CGI mode | fuel-scm | Unknown |
Git | Gitweb, wit, cgit, GitLab, GitHub, gitorious, Trac, Kallithea, Rhodecode, Deveo, Bitbucket, Stash, Springloops,Bonobo Git Server | gitk, git-gui (Tcl/Tk), tig, Gitbox (OS X), TortoiseGit, qgit, gitg (GNOME/GTK), (h)gct (Qt), git-cola (Qt), Git Extensions (Windows), GitEye, SmartGit/Hg, Tower, SourceTree (OS X/Windows), Sprout (OS X), GitX (OS X), GitUp (OS X), GitKraken | Aptana 3 Beta (Aptana Studio 3 with Git Integration); Eclipse (JGit/EGit); Netbeans (NbGit); KDevelop; Visual Studio (Git Extensions); Emacs (extension for standard VC); SAP Web IDE; TextMate (Git TextMate Bundle); Vim (VCSCommand plugin and fugitive plugin); IntelliJ IDEA >8.1 (standard in Community and Ultimate Editions); Komodo IDE; Anjuta |
GNU arch | ArchZoom | ArchWay (GTK2), TlaLog | Emacs (standard VC) |
IC Manage | included | Windows, Linux, Unix, OS X | Emacs, Cadence Design Framework, Synopsys Custom Designer |
MKS Integrity | Yes | Windows, Linux, Unix, Solaris, AIX, | Eclipse, Microsoft Visual Studio, Perforce and others. Also provides support for the industry standard Source Code Control (SCC) interface[64] |
Mercurial | included,[nb 88] Bitbucket, Trac, Kallithea, Rhodecode, Deveo | Hgk (Tcl/Tk), (h)gct (Qt), TortoiseHg (Windows Explorer, Nautilus), MacHg,
MacMercurial, Murky, SourceTree (Windows/OS X), TortoiseHg, SmartGit/Hg |
IntelliJ IDEA (hg4idea 3:rd party plugin), Eclipse (Mercurial Eclipse), NetBeans, Visual Studio 2008, Emacs, Vim (VCSCommand plugin), Komodo IDE, Eric Python IDE |
Monotone | ViewMTN, TracMonotone, | Monotone-Viz (GTK+), Guitone (Qt), Monotone Browser (GTK+, Perl) | Unknown |
Perforce | included, P4Web, P4FTP | Windows, Linux, Unix, OS X, BeOS available | Eclipse, Visual Studio (P4SCC), KDevelop (standard?), IntelliJ IDEA (standard in Ultimate Edition), Komodo IDE, BBEdit, Emacs (p4.el) |
Rational Team Concert | Yes | Eclipse-based GUI | Eclipse integration; MS Visual Studio integration(Limited) |
StarTeam | included | Windows, Java, Eclipse, Visual Studio, BDS2006 integration, plus Java command-line | IntelliJ IDEA (standard in Ultimate Edition), Visual Studio, JBuilder, Eclipse |
Subversion | Apache 2 module included, WebSVN, ViewSVN, ViewVC, Trac, SharpForge, sventon, Springloops, Deveo | Java, KDESVN, OS X[65] (including Finder integration), Nautilus, Qt, RabbitVCS, RapidSVN, SourceTree (OS X), TortoiseSVN (Windows Explorer) | Anjuta, BBEdit, Eclipse (Subclipse, Subversive), Emacs (standard VC), IntelliJ IDEA (standard in Community and Ultimate Editions), KDevelop (standard), Komodo IDE, MonoDevelop (standard), Netbeans, RabbitVCS (for GEdit), TextMate (SVNMate plugin), Visual Studio (AnkhSVN, VisualSVN). See also Comparison of Subversion clients |
Surround SCM | Yes | Windows, OS X, Linux | Dreamweaver, Eclipse, IntelliJ IDEA, JDeveloper, KDevelop, NetBeans, Powerbuilder, Visual Studio, WebStorm |
Synergy | via Telelogic Change interface | Windows (incl. explorer integration), Linux, Unix | Eclipse (Telelogic proprietary), Visual Studio (Telelogic proprietary), IntelliJ IDEA (Telelogic proprietary) |
Team Foundation Server | included (Sharepoint Server used for web services) | Windows included; OS X, Unix available | Visual Studio. Java client for Eclipse IDE and IntelliJ IDEA (standard in Ultimate Edition) |
Vault | included | Windows, Unix-like, OS X | Visual Studio 2003 and higher, Eclipse 3.2 and higher |
Veracity | included | Tortoise interface for Windows | No |
Vesta | VestaWeb | No | No |
Visual SourceSafe | none included; SSWI, VSS Remoting | Windows included; Linux, OS X and Solaris using SourceOffSite; any Java VM using Sourceanywhere for VSS | Visual Studio, IntelliJ IDEA (standard in Ultimate Edition) |
Software | Web interfaces | Stand-alone GUIs | Integration and/or plug-ins for IDEs |
History and adoption
Lua error in package.lua at line 80: module 'strict' not found. Table explanation
- Software: The name of the application that is described.
- History: briefly describes the software's origins and development.
- 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.
Software | History | Notable users |
---|---|---|
AccuRev SCM | First publicly released in 2002 | American Airlines, Ford, Lockheed Martin, Orbitz,[66] Xerox, McAfee,[67] Polycom, SanDisk,[68] Siemens, Sony, Symantec,[69] Thomson Financial, Verizon Wireless[70] and many others |
GNU Bazaar | Loosely related to baz. Sponsored by Canonical Ltd.. | Ubuntu, Launchpad, KatchTV,[71] |
BitKeeper | Influenced by Sun WorkShop TeamWare | Linux Kernel (2002–2005) and many companies[72] |
CA Software Change Manager | Original company founded in 1977; CA SCM (then called CCC/Harvest) first released in 1995. | CA does not disclose customer lists without the companies' permission. CA SCM is used by companies with global development teams including 13 of the Fortune 100. |
ClearCase | Apollo Computer in DSEE during the 1980s. The most recent version is 8.0.1, released in Nov 2011. | Developed beginning in 1990 by Atria Software, following concepts developed byIBM, Alcatel-Lucent, Cisco, Motorola, Siemens, Ericsson, Nokia, Society for Worldwide Interbank Financial Telecommunication and other large organizations worldwide[citation needed] |
Code Co-op | [73] released soon after. | The first distributed VCS, demoed in 1997,|
CVS | RCS | First publicly released July 3, 1986; based on|
CVSNT | CVS. Started by CVS developers with the goal adding support for a wider range of development methods and processes. | First publicly released 1998; based onPrimarily professionals (not hobbyists), e.g.: AnandTech,[74] Wachovia,[75] Wells Fargo,[76] Goldman Sachs [77] |
darcs | First announced on April 9, 2003 | Mnet, xmonad, Projects Using Darcs |
Dimensions CM | Serena Software) and finally "Dimensions CM" (since 2007, Serena Software). | Developed by SQL Software under the name "PCMS Dimensions" during the late 1980s (PCMS standing for Product Configuration Management). Through number of company acquisitions the product was released under names "PVCS Dimensions" (1990s, Intersolv), "Dimensions" (early 2000s, Merant), "ChangeMan Dimensions" (2004,Lockheed Martin, European Space Agency, Fujitsu Business Communication Systems and many companies worldwide[78] |
Fossil | Fossil and SQLite have used Fossil since 21 July 2007. | SQLite, Fossil, Tcl/Tk Project |
Git | Linus Torvalds in April 2005, following the BitKeeper controversy.[79] | Started byLinux kernel, Android, Bugzilla, GNOME, GNU Emacs, GRUB2, KDE, MySQL, Perl 5,[80] PostgreSQL, X.Org, Cairo, Qt Development Frameworks, Samba, OpenEmbedded, Ruby, Ruby on Rails, Wine, Fluxbox, Openbox, Compiz Fusion, XCB, ELinks, XMMS2, e2fsprogs, GNU Core Utilities, DokuWiki, Drupal, LibreOffice, MediaWiki,[81] Mono, ASP.NET MVC, ADO.NET Entity Framework, NuGet, jQuery and many of its plugins, OpenCV, Wireshark, Django, many companies like Ericsson, Microsoft, Huawei, Apple, Amazon, LG |
GNU arch | GNU project. Lord resigned as maintainer in August 2005. | Started by Tom Lord in 2001, 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[82] |
MKS Integrity | [83] | Originally developed by MKS Software. Purchased by PTC in May 2011Many global engineering and IT organizations[84] |
Mercurial | BitKeeper controversy.[79] First released on April 19, 2005 | Started April 6, 2005 by Matt Mackall, following thePython,[85] Mozilla, OpenJDK, NetBeans, Xine, Xen, OpenSolaris, wmii, MoinMoin, Linux-HA, Pidgin, Gajim, Nginx, PyPy, SDL |
Monotone | First released in April 2003 | CTWM, Xaraya, I2P,[86] Botan[87][88] |
Perforce | Developed by Perforce Software, Inc which was founded in 1995 by Christopher Seiwald. | many organizations worldwide,[89] FreeBSD,[90] Google[91] |
Rational Team Concert | Version 1.0 released in 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 | Marc Rochkind in 1972 (binary history files, written in Snobol on IBM-370,[92] SCCSv4 with text history files was published February 18, 1977.[93] The same history file format is still used in SCCS 5.0.[94] | Started byas the POSIX source-control tool, SCCS is widely available on UNIX platforms, but not included in many Linux distributions. Sun WorkShop TeamWare uses SCCS files. |
StarTeam | [95] Developed by StarBase software, acquired by Borland(which was acquired by Micro Focus). | Version 1.0 1995;Borland, BT, Cintas, EDS, Kaiser Permanente, Met Office, Quest Software, Raymond James, Siemens, and many more globally distributed companies[96] |
Subversion | CVS developers with goal of replacing CVS | Started in 2000 byASF, clang, gcc, SourceForge, FreeBSD, Google Code, KDE (till 2011), PuTTY, Zope, Xiph, GnuPG, CUPS, Apache OpenOffice, TWiki, WebKit, available on CodePlex, and many organizations worldwide[97] |
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. | |
Team Foundation Server | First publicly released in March, 2006 | |
Vault | First publicly released in February, 2003 | Unknown |
Vesta | First publicly released under the LGPL in 2001 | DEC Alpha team, Compaq Alpha team, Intel microprocessor development |
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 | Unknown |
Software | History | Notable users |
See also
Notes
- ↑ 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.
- ↑ RTC is not a distributed revision control system; but has some distributed feature that can be configured
- ↑ Various forks of the original Unix sources exist, only one of which is actively maintained
- ↑ While it is possible for multiple users to edit the same version of a file concurrently, only one of them can write back the changes.
- ↑ While some forks of SCCS are free software, others remain closed as parts of commercial Unix distributions.
- ↑ 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.
- ↑ 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.
- ↑ Snapshots with binary files. It's discussed to have binary changesets in future (darcs 3)
- ↑ 4 MB of which are sqlite3.c
- ↑ Mercurial revision numbers are local to a repository; they can differ from repository to repository depending on in which order merges are performed.
- ↑ 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.
- ↑ Veracity revision numbers are local to a repository; they can differ from repository to repository depending on in which order merges are performed.
- ↑ Evil twins are common.Evil Twins in SCM, Not Hollywood
- ↑ Atomic commit can be enabled for individual checkin's ClearCase 7.1.1 release notes.
- ↑ See FAQ
- ↑ darcs' patches each bear a unique identifier, impossible to merge twice the same patch in a repository (without destructively modifying history using "unsafe" commands).
- ↑ Although it stores (and shows by default) 8-bit filename. See FAQ
- ↑ Using Item Revision Attributes ("Working with Items" demo, covering user define attributes).
- ↑ In the sense that its messages and graphic interfaces have English only localization, though the software is certified running fine on various language operating systems.
- ↑ Controlled by the 'crnl-glob' setting ([1])
- ↑ Git does not explicitly track renames, because by design it does not track individual files. Renames and split of source files are detected after the fact, if the file content does not change dramatically.
- ↑ Since git-1.7.9 (see release notes). Older versions do not sign commits, only tags (see the -s option in git-tag(1) Manual page)
- ↑ UTF-8 filenames are supported as of version 1.7.10 (MSysGit release notes).
- ↑ Git has some issues with very large repositories. See Section Better big-file support and Section Designing a faster index format in SoC 2012 Ideas.
- ↑ Integrity enabled change packages provide complete workflow and 21 CFR Part 11 compliant digital signatures against the item controlling the change package.
- ↑ 2009 SP5 added a feature to merge child development paths.
- ↑ Mercurial is in the process of being translated to at least Dutch and Chinese
- ↑ Support depends upon host OS and is well supported under Unix, but not Windows OSs, due to lack of host support. See [2]
- ↑ It could be done via user level hooks
- ↑ Perforce will version-control symbolic links themselves, but will not recognise its own version-controlled views (local file trees), if you access them via symbolic links.
- ↑ Through the procees behaviour components: Operation advisors and Operation participants. http://jazz.net/library/article/292
- ↑ While the source code of SCCS has been written to support internationalisation, only English message texts exist.
- ↑ 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.
- ↑ Since SVN 1.8 subversion supports improved move-tracking on the client side. On the server-side it's not supported yet.
- ↑ New to SVN 1.5 <http://subversion.apache.org/docs/release-notes/1.5.html#merge-tracking>. A separate tool "svnmerge" <http://www.dellroad.org/svnmerge/> 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 http://svnbook.red-bean.com/nightly/en/svn.branchmerge.tags.html 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
- ↑ in Asian releases (v6.6a to v7.1a) and since version 7.2 in general
- ↑ Version change history is removed upon rename; old name not referenced.
- ↑ not implemented yet
- ↑ Can not be disabled in dynamic views.
- ↑ Using alias of the CVSROOT/modules file.
- ↑ CVS records executable bit when a file is added, but does not allow changing it later on.
- ↑ This is a GUI feature supported by TortoiseCVS and WinCVS both of which include/use CVSNT.
- ↑ Same as CVS, plus also the ability to have replicated repositories including 'shadow' repositories.
- ↑ Use the module/directory name or an alias created using CVSROOT/modules or CVSROOT/modules2 administration file.
- ↑ CVSNT supports this when the make/build tool used also supports it.
- ↑ 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.
- ↑ Using Sub Project functionality (Documentation Portfolio | User's Guide | Relating a Project or Stream to Other Objects).
- ↑ Checkouts can be nested with "fossil open --nested"
- ↑ The Git FAQ states that keyword expansion is not a good thing
- ↑ add -i and add -p, see git-add(1) Manual Page
- ↑ The Git FAQ explains why preserving modification time is considered harmful
- ↑ Configurable on server as a Project Option and on the client as a User Option.
- ↑ commit --interactive, see SVK::Command::Commit
- ↑ Through third-party tools such as Tortoise SVN.
- ↑ SVN can not preserve file modification times. On request by the client, it can restore check-in time as last-modified time. Disabled by default.
- ↑ MIME type of the file must be detected as a "human-readable" MIME type, even if the merge tool can work with non-human-readable files
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 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
- ↑ pull is fetch plus merge.
- ↑ copies are detected after the fact, much like renames
- ↑ Mercurial Bookmarks are similar to local branches.
- ↑ Through any of various means, place (to-be-immutable) file in an immutable directory prior to vcheckin.
- ↑ mv(1) or link(2) the immutable file from its origin immutable directory to its destination immutable directory prior to vcheckin.
- ↑ Through any of various means, copy the immutable file from its origin immutable directory to its destination immutable directory prior to vcheckin.
- ↑ You can also enable this as a central preference in the repository server control panel or configuration file
- ↑ Requires administrator privileges. You can 'rollback' a change using 'cvs update –e –j @commitid –j "@<commitid"' but the change and rollback evidence remains in the history
- ↑ yes – use TortoiseCVS or WinCVS to commit the change to the destination and select which specific files to keep
- ↑ bisect is also available for cvs which should work with CVSNT
- ↑ 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
- ↑ fossil stash supports multiple shelves with comments.
- ↑ git stash is a multi-level shelve, it's possible to shelve several change groups at the same time
- ↑ 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
- ↑ SVN Bisect tool svn-bisect
- ↑ svn status lists differences between working copy and repository, not differences between two repositories
- ↑ locks are advisory, and can't be enforced on disconnected instances
- ↑ hgweb for single-repository access and hgwebdir for multiple repository access from a single HTTP address
References
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ http://www.accurev.com/download/docs/5.3.0_books/AccuRev_5_3_0_Install_Release_Notes.pdf
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Support Policy for National Languages and ClearCase from IBM Support
- ↑ Largefiles Extension since Hg Rev.:2.0
- ↑ [3] from the Perforce User's Guide
- ↑ [4] from the Perforce User's Guide
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ [5] – Seapine Software Releases Surround SCM 2009
- ↑ Signature – SVK Wiki
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ IBM Rational ClearCase: The ten best triggers from IBM DeveloperWorks
- ↑ The manifest, Fossil file formats
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ La Chose : web agency and software maker – agence web et développement de logiciels
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Serena Software Customers.
- ↑ 79.0 79.1 Towards A Better SCM: Revlogs and Mercurial, presented by Matt Mackall to the Ottawa Linux Symposium, July 2006
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ IC Manage: Industrial Strength Data Management
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ http://www.perforce.com/perforce/customers.html
- ↑ Perforce in FreeBSD Development
- ↑ http://www.perforce.com/perforce/conferences/eu/2010/Presentations/Geoff_Mendal-Strategic_Plan.paper.pdf
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ http://minnie.tuhs.org/cgi-bin/utree.pl?file=PWB1/usr/news/pibs PWB UNIX product announcement
- ↑ Compare the SCCS 4 file format with the SCCS 5.0 file format (as manpage sccsfile(4) in http://dlc.sun.com/osol/man/downloads/20070320/man-sunosman-20070320.tar.bz2
- ↑ Starteam®
- ↑ Customer Profiles
- ↑ http://subversion.tigris.org/testimonials.html