Version-Control Systems for Linux(sometimes called Source-code management = SCM or revision-controlsystems = RCS) Last updated:Sun Jan 6 01:50:25 PST 2008 This listing of Linux VCS tools concentrates on VCS as a category distinct from project management, process management, workflow management, build control, release management, trouble ticketing, CASE, and other useful but adjoining functions. I'll try to mention where such extended features are present. Pointers ([img]http://linuxmafia.com/faq/Apps/note.png/img]) highlight[ entries notable in the opinion of this page's maintainer(Rick Moen, [email=%[email] 20rick@linuxmafia.com[/email]%20] rick@linuxmafia.com[/email]), to whom complaints^Wcomments can be sent. [b] Bias & Other Disclaimers:[/b] [list][] I lack special VCS expertise. I've used many to some degree.[] Friends include Martin Pool ([url=http://linuxmafia.com/faq/Apps/vcs.html#bzrBazaar[/url]), Andrew Tridgell ([url=http://linuxmafia.com/faq/Apps/vcs.html#sourcepullerSourcePuller[/url]), Bram Cohen ([url=http://linuxmafia.com/faq/Apps/vcs.html#cdvCodeville[/url]), and Paul Mackerras (gitk).[/list]
Contents
[list][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#accurevAccuRev[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#aegisAegis[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#allfusionharvestAllFusion] Harvest Change Manager[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#archArch] (VCS specification)[/url][/b][*][b][img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://linuxmafia.com/faq/Apps/vcs.html#arx] ArX/url]/b]*] b] url=http://linuxmafia.com/faq/Apps/vcs.html#archipel] Archipel/url]/b]*] b] url=http://linuxmafia.com/faq/Apps/vcs.html#barch] Barch/url][ (defunct)[/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#bazBazaar] 1.x ("baz")/url[/b][*][b][img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://linuxmafia.com/faq/Apps/vcs.html#bzr] Bazaar[ ("bzr")[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#bitsafeBitsafe[/url[/b[*[b[imghttp://linuxmafia.com/faq/Apps/note.png[/img[url=http://linuxmafia.com/faq/Apps/vcs.html#bkBK/Pro[/url]] (formerly BitKeeper)[/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#briefcase/BriefCase] 3 Toolkit[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#cbeCBE[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#changemanChangeMan] DS[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#clearcaseClearCase[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#cmplusCM+[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#cmzCMZ[/url[/b[*[b[imghttp://linuxmafia.com/faq/Apps/note.png[/img[url=http://linuxmafia.com/faq/Apps/vcs.html#cdvCodeville] ("cdv")[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#controlcsControl-CS[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#cscvscscvs[/url]] (defunct)[/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#csscCSSC[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#cvsntCVSNT[/url[/b[*[b[imghttp://linuxmafia.com/faq/Apps/note.png[/img[url=http://linuxmafia.com/faq/Apps/vcs.html#darcsdarcs[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#dcvsDCVS[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#disciplineDiscipline] 4GL[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#evaEva[/url]] (defunct)[/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#fastcstFastCST[/url[/b[*[b[imghttp://linuxmafia.com/faq/Apps/note.png[/img[url=http://linuxmafia.com/faq/Apps/vcs.html#gitgit[/url]] and related "porcelains" (Cogito, gitweb, gitk, qgit, gct, StGIT)[/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#gnuarchGNU] Arch ("tla")[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#jrmsJRMS[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#katieKatie[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#larchLarch[/url]] (defunct)[/b][*][b][img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://linuxmafia.com/faq/Apps/vcs.html#hg] Mercurial/url]/b]*] b] url=http://linuxmafia.com/faq/Apps/vcs.html#metacvs] Meta-CVS/url][ (defunct)[/b][*][b][img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://linuxmafia.com/faq/Apps/vcs.html#monotone] Monotone/url]/b]*] b] url=http://linuxmafia.com/faq/Apps/vcs.html#opencm] OpenCM/url][ (defunct)[/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#ouraycmOurayCM[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#perforcePerforce[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#prcsPRCS[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#pvcsPVCS[/url]] (defunct)[/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#qefQEF[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#razorRazor[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#rceRCE[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#rcsRCS[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#sablimeSablime[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#sccsSCCS[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#sivecoSiVeCo[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#snapshotcmSnapshotCM[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#so6So6[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#sourceintegritySource] Integrity[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#sourcejammerSourceJammer[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#sourceoffsiteSourceOffSite] Classic[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#starteamStarTeam[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#stellationStellation[/url[/b[*[b[imghttp://linuxmafia.com/faq/Apps/note.png[/img[url=http://linuxmafia.com/faq/Apps/vcs.html#svnSubversion[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#superversionSuperversion[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#surroundSurround] SCM[/url][/b][*][b][url=http://linuxmafia.com/faq/Apps/vcs.html#svkSVK[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#synergySynergy/CM[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#truechangeTrueChange[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#vcmVC/m[/url[/b[*[b[url=http://linuxmafia.com/faq/Apps/vcs.html#vestaVesta[/url[/b[/list]]
[url=http://www.accurev.com/AccuRev[/url]] (AccuRev, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#accurevlink[/url]) AccuRev is a client-server networked, transaction-based system. Automatically versions directories. Provides changeset/transaction-oriented (as opposed to file-based) pre and post triggers that can run on both the client and the server. AccuRev, Inc. (formerly Ede Development Enterprises) is coy about pricing, but in 1999 it was US $750 for a single licence, including a year of support and updates. Binary-only. Proprietary.
[url=http://aegis.sourceforge.net/Aegis[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#aegislink[/url]) Aegis is Peter Miller's transaction-based software configuration management system that enforces a development process requiring that change sets "work" before integration into the project baseline. It calls make and [url=http://linuxmafia.com/faq/Apps/vcs.html#rcsRCS[/url]] (or similar) for software-building and repository functions. Aegis is local-oriented (non-network-aware). Very mature. Atomic commits. Supports renames. Poor Win32 support. Heavy security focus and well-developed process integration. Code is C. Open source (GNU GPL).
[url=http://www3.ca.com/Solutions/Product.asp?ID=255AllFusion] Harvest Change Manager/url ([url=http://linuxmafia.com/faq/Apps/vcs.html#allfusionharvestlink[/url]) AllFusion Harvest (formerly CCC/Harvest aka Change and Configuration Control/Harvest, which was published by Platinum Technology International, Inc.) is a multi-platform networked VCS that integrates with an optional build system and provides integrated problem tracking. Binary-only. Proprietary.
Arch ([url=http://linuxmafia.com/faq/Apps/vcs.html#archlink[/url]) Arch is an advanced [i] VCS specification with multiple, independent but compatible implementations, and several descendants/offshoots. Arch is widely considered more ambitious than [url=http://linuxmafia.com/faq/Apps/vcs.html#svnSubversion[/url]], mainly on account of its support for decentralised repositories: In Arch, any branch or developer's private work area can be treated as a repository of its own, with a global name space for developers, repositories, and branches, which you then periodically merge with a central repository.
Please see also the individual entries for the several implementations and offshoots of this specification: [url=http://linuxmafia.com/faq/Apps/vcs.html#arxArX[/url]], [url=http://linuxmafia.com/faq/Apps/vcs.html#barchBarch[/url]], [url=http://linuxmafia.com/faq/Apps/vcs.html#bazBazaar] 1.x[/url], [url=http://linuxmafia.com/faq/Apps/vcs.html#bzrBazaar[/url]], [url=http://linuxmafia.com/faq/Apps/vcs.html#evaEva[/url]], [url=http://linuxmafia.com/faq/Apps/vcs.html#gnuarchGNU] Arch/tla[/url], [url=http://linuxmafia.com/faq/Apps/vcs.html#larchLarch[/url]].
All the various Arch implementations used to be linked from [url=http://wiki.gnuarch.org/Mat] Kovach's Arch Wiki/url — but recently (2005-04) the wiki seems to have dropped all but GNU Arch/tla and Bazaar 1.x.
[img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://www.nongnu.org/arx/] ArX/url][ ([url=http://linuxmafia.com/faq/Apps/vcs.html#arxlink[/url]) ArX is Walter Landry's (no longer data-compatible) 2003 C++ reimplementation of the decentralised, networked [url=http://linuxmafia.com/faq/Apps/vcs.html#archArch] VCS specification[/url], originally inspired in part by dissatisfaction with poor portability and other problems in Tom Lord's original shell-script-based [url=http://linuxmafia.com/faq/Apps/vcs.html#larchLarch[/url]] implementation. As an Arch offshoot, ArXis based on tracking deltas (changesets). Archives, patches, and revisions are cryptographically signed using gnupg signatures and SHA-256 hashes. ArX can use ftp, ssh, sftp, http, and http w/WebDAV transport.Internationalised but not localised. Centralised development can be done via a patch queue. Program ports to MacOS X, and in an "embryonic" fashion (2005-01-23) to Win32 (via Cygwin). On Linux, note (large) dependency on gnome-vfs. Beta as of 2005-04. Possibly moribund (2008). Code is C++. Open Source (GNU GPL).
[url=http://wiki.type-z.org/index.php/Projects/ArchipelArchipel[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#archipellink[/url]) A prototype distributed system coded on Python by "Sébastien". Repository is stored in a queryable RDF database. Extensible/modifiable using plug-in delta modules for different versioning models. Version information is stored as SHA-1 hashes. It is unclear at this point (2005-04) whether this software is publicly available in any form, let alone open source.
[url=http://users.bigpond.net.au/robertc/Barch[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#barchlink[/url]) Barch (for "binary arch" — now defunct) was Robert Collins's (early) attempt at a compatible C++ implementation of the [url=http://linuxmafia.com/faq/Apps/vcs.html#archArch] VCS specification[/url] — inspired in part by the need to transcendtechnical and portability limitations in Tom Lord's then-current shell-script-based implementation, [url=http://linuxmafia.com/faq/Apps/vcs.html#larchLarch[/url]]. The project appears to have stalled as of Collins's 0.0.6-DEVEL code released on 2002-12-29. However, more recently, Collins created [url=http://linuxmafia.com/faq/Apps/vcs.html#bazBazaar] 1.x/url. Code is C++. Open source (GNU GPL).
Bazaar 1.x (baz) ([url=http://linuxmafia.com/faq/Apps/vcs.html#bazlink[/url]) Bazaar 1.x (executable name "baz") was Robert Collins's fork for Canonical, Ltd. of Tom Lord's GNU Arch ("tla") C-language implementation of the [url=http://linuxmafia.com/faq/Apps/vcs.html#archArch] VCS specification[/url]. It aimed to combine the essential features of [url=http://linuxmafia.com/faq/Apps/vcs.html#gnuarchGNU] Arch ("tla")[/url] with userinterface improvements and Win32 support: [url=http://linuxmafia.com/faq/Apps/vcs.html#svnSubversion[/url-like] diff, switch, import, export, and log commands. A single merge commandallowed merging between arbitrary branches, daily builds,internationalisation, Python bindings, Win32 binaries and an MS-WindowsGUI, an annotate/blame/praise command, comprehensive documentation, and UIsimplification. History was stored separately from the workingdirectory. As of 2005-08, Canonical decided to de-emphasise work onBazaar 1.x, put that codebase in maintenance mode, and concentrate on [url=http://linuxmafia.com/faq/Apps/vcs.html#bzrBazaar[/url]] ("bzr"), formerly Bazaar 2, as the true long-term successor for GNU Arch/tla. Then, some time during 2006,Bazaar 1.x was discontinued entirely. Code is C. Open source (GNU GPL).
[img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://bazaar-vcs.org/] Bazaar[ (bzr)/url Bazaar (executable name "bzr"), initially called Bazaar-NG, later called Bazaar 2, is Martin Pool's networked, fully distributed, changeset-oriented variant implementation / offshoot, coded in Python for Canonical, Ltd., based on the [url=http://linuxmafia.com/faq/Apps/vcs.html#archArch] VCS specification[/url]. It aims to combine the best feature of all the new VCSes ([url=http://linuxmafia.com/faq/Apps/vcs.html#darcsdarcs[/url,[url=http://linuxmafia.com/faq/Apps/vcs.html#svnSubversion[/url]], [url=http://linuxmafia.com/faq/Apps/vcs.html#gnuarchGNU] Arch/tla[/url], [url=http://savannah.nongnu.org/projects/quiltQuilt[/url]], and [url=http://linuxmafia.com/faq/Apps/vcs.html#bkBK/Pro[/url]) "into a single coherent and simple system",and has a simple [url=http://linuxmafia.com/faq/Apps/vcs.html#svn%3ESubversion%3C/a%3E/%3Ca%20href=CVS[/url-like] syntax for common operations likeadd, mv, diff, status, commit, log, merge, etc. Stores/checks SHA-1 hashes of all patches and hashes of the tree state in each revision. Hashes can optionally be signed. Stores changesets (deltas). Controlfiles are stored inside the working directory tree.Changesets can be sent/received overe-mail, optionally gnupg-signed. Renames, deletions, binaries are versioned.Uses hashes for integrity checks, notfor identity. Repository data are stored encoded in UTF-8.Partial trees and per-file histories are not supported. Though there is no dedicated network server program module, there is built-in support for "pull" synchronisation over a variety of networkmechanisms; by default, there is both "push" and "pull" support over sftp transport only, and sftp is supported only if you install the bzrtools extensions (plus Python modules paramiko and pyCrypto). Bazaar is also the successor to the former Bazaar 1.x ("baz") project, and all baz repositories should by now (2006) have beenconverted. Change history is append-only. Tool lets you "cherry-pick"changes from one branch to another. As a further advance onBazaar 1.x, each checkout is fully usable as a repository. At this date(2005-04), bzr is not yet feature-complete. Modular design: library +command-line client, making feasible use via library call from anyother client. All development takes place on branches, which are thehighest-level grouping. Forking of branches is by intention frequentand has been made easy. Three-way merge algorithm. Allows merges withinan arbitrary graph. History-sensitive merges allow safe repeatedmerges, merges across renames, and mutual merges between parallellines. Checkouts default to the last archive you pulled from (as withdarcs and BK/Pro). Bazaar (v. 0.7) was one of three VCSes seriously [url=http://www.opensolaris.org/os/community/tools/scm/bzr-evalconsidered[/url]] for hosting the very large OpenSolaris Project, and waseliminated on grounds of slowness and high memory usage compared to gitand (the winner) Mercurial. Trent Buck published a[url=http://twb.ath.cx/%7Etwb/canon/words/darcs-bazaar.htmlcomparison[/urlof] darcs and Bazaar (bzr) in 2006. Code is Python script: Tool should run anywherethat Python 2.4 and above runs (i.e., Unixes including MacOS X, Win32, etc.). Open source (GNU GPL).
[img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://www.bitkeeper.com/] BK/Pro/url][, formerly BitKeeper (BitMover, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#bklink[/url]) Networked, changeset-oriented system (executable name "bk"). Atomic commits. Supports renames. Supports file/directory copies that retain version history. Has some advanced merge methods, based on line identity. Uses time, rather than sequence, in some places. Repository, which uses weave storage, gets fully replicated onto each developer's system (multiple repositories / staging areas). History is stored with the working directory. Checked-out files must be marked before editing. Patches fromothers can retain their separate identity even after integration (are not collapsed/rolled up). Has default GUI. Emits lots of noisemessages, and has lots of weird commands. Requires both per-file andper-changeset commands. Very space-efficient storage. Has fine-grainedpre- and post-event triggers. Can remotely find status of a tree, e.g.parent, number of comitters, versioned files, extras, modified, etc.Binary-only in recent versions. Was used by the majority of core Linux kernel developers until 2005-04, although some declined for licensing and other reasons. See: [url=http://www.kerneltraffic.org/kernel-traffic/kt20030323_210.txtanalysis[/url]] of architectural advantages over competitors. [list][*][b] Commercial version[/b] is either buy or lease: Lease is US $1000 to US $1750 annually per seat. Purchase is US $2800/seat to US $5800/seat. Pricing depends on quantity. One person who posted a BitMover price list was threatened ([url=http://yro.slashdot.org/comments.pl?sid=41614&cid=4396950http://yro.slashdot.org/comments.pl?sid=41614&cid=4396950[/url]) with a copyright-violation lawsuit. Actual pricing may differ, and may depend on sales negotiations. BitMover CEO Larry McVoy has [url=http://www.uwsg.iu.edu/hypermail/linux/kernel/0210.0/2505.htmladdressed[/url]] BitKeeper pricing on the kernel mailing list.
As of 2004, the commercial version, and not just the gratis-usage version (below), likewise proved to be [url=http://lwn.net/Articles/103694/subject[/url]] to gaining more restrictive conditions over time: Developers who are considered likely to assist in development of competing VCSes are, starting 2004, refused the right to buy a copy. BitMover CEO Larry McVoy claimed in 2005-04 that his firm regards hosted projects' metadata, e.g., who did which changes and when (the projects' change history), as [url=http://www.theregister.co.uk/2005/04/15/perens_on_torvalds/page2.htmlproprietary] to BitMover, Inc.[/url], rather than being customer data. It also recently (2005) came to light that BitMover has some [url=http://better-scm.berlios.de/bk/what-bitmover-got-wrong.htmlundisclosed] patents[/url]. As of 2005-09, potential BitMover customers should be warned there are still ongoing [url=http://www.selenic.com/pipermail/mercurial/2005-September/004745.htmlreports[/url]] of threatening letters sent to BK/Pro commercial licenseeswhose staff separately perform development work on open-source VCSes.(In the case linked to, the coder's employer claimed to infer in followuptelephone conversation with McVoy a threat to not renew licences). Proprietary. Binary-only. [] [b] Gratis-usage version (discontinued a/o 2005-04)[/b]: [list][*] Was encumbered by mandatory "[url=http://www.bitkeeper.com/v2_logging/Open] Logging[/url]" of your metadata (privacy loss) if used with multi-user access. [] Had a history of gaining more restrictive conditions over time. E.g.: The licence initially provided that, if the company's Open Logging servers ceased to function for 180 days, the software would convert to GPL, but that provision was later withdrawn. Source code access was also withdrawn. The non-compete clause was added. A provision was added (and later removed) to allow BitMover to terminate the licences of any individuals or groups whose usage is deemed to have cost BitMover over US $20,000 in support costs. Consequently: (1) Publicly posted comments about BitKeeper were often outdated. (2) It was recommended to download the program and read its current licence agreement. (See slightly outdated licence analysis, mirror copy [url=http://www.mit.edu/afs/athena/user/x/i/xiphmont/Public/critique.html1[/url]] [url=http://www.taniwha.org/bitkeeper.html2[/url]], for which BitMover threatened author Jack Moffitt with litigation. The reference to a mirror copy is necessary because BitMover successfully demanded suppression of Moffitt's own pages on the subject.) [] Was subject to mandatory upgrading, per the licence's requirement, when new versions come out. There are compelling technical reasons why BitMover required this. However, it should be noted that replacement versions often introduced new licensing containing novel restrictions, such as the no-compete clause. (The point was not to portray this as somehow sinister: It was to prevent people from assuming they could keep using older versions, if they didn't like newer ones' terms of use.) [] Was encumbered by non-compete clause, [url=http://lwn.net/Articles/12120/http://lwn.net/Articles/12120/[/url]]. If you or your employer develops, produces, or [re] sells a "substantially similar" competing product, you may not use it, while a BitMover licensee and for a year's time thereafter. BitMover sometimes waived this restriction for particular users. BitMover had [url=http://www.uwsg.iu.edu/hypermail/linux/kernel/0210.0/1725.htmladvised[/url]] some Linux kernel developers that they may not use the gratis-usage version, given their work on other VCSes. (They would have been obliged to buy the commercial version. 2005 addendum: That option has reportedly also been closed, with appending of that same non-compete clause to the commercial version, as well.) [] Required in latter versions that the the hosted repositories' source code contents be available (on BitMover request) via the BitKeeper access protocol. [] Was [url=http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www/story/04-06-2005/0003335342&EDATE=announced[/url]] to be end-of-lifed in a company press release of 2005-04-06. A [url=http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www/story/06-01-2005/0003769148&EDATE=later] press release[/url] pegged the EOL date as 2005-07-01, on which all client copies will be remotely disabled. [] Proprietary. Binary-only. [/list] [b][url=http://www.bitkeeper.com/press/2005-03-17.htmlOpen-Source] BitKeeper Client[/url]:[/b] [list][] Allows check-out of the head (latest) version of any codebase in a public BK/Pro (BitKeeper) repository. [/list] [*][b] Access via third-party open-source tools[/b] to repository contents: Andrew Tridgell's [url=http://sourceforge.net/projects/sourcepuller/SourcePuller[/urlis] an open source (GNU GPLv2) client and two subroutine libraries(libsp and libsccs) able to talk to BitKeeper servers (finally) withfull access over the wire, using a (trivially easy) [url=http://lwn.net/Articles/132938/reverse-engineered] implementation[/url] of the BitKeeper network-access protocols, to codebase metadata, e.g.,who did which changes and when (the hosted codebases' change history).Tridgell independently developed SourcePuller to allow it (andpotentially other VCSes using its library interfaces) to check outBitMover-hosted data and information in local BitKeeper repositorieswithout the information lossage that occurs when using (e.g.) BitMover's BK-CVS gateways. Access was for a while possible, until changes to BitKeeper'soperation, using Andrea Arcangeli's [url=ftp://ftp.kernel.org/pub/linux/kernel/people/andrea/openbkwebopenbkweb[/url]] or Pavel Machek's [url=http://www.sf.net/projects/bitbucket/BitBucket[/url]]. The latter uses [url=http://linuxmafia.com/faq/Apps/vcs.html#csscCSSC[/url]] with [url=http://linuxmafia.com/%7Erick/linux-info/kernel-current-source-without-bitkeeperthe] required patch[/url] to extract data from individual files. (Warning: openbkweb is an alphaware Python script implementing the BitKeeper HTTP access protocol, and may at any given time lag BitKeeper development too much to be functional. BitBucket is likewise pre-release, and BitMover's Larry McVoy claimed to me on 2003-11-04 that the patched CSSC no longer works on current BK/Pro / BitKeeper, though I don't have details.) Note that McVoy [url=http://www.kerneltraffic.org/kernel-traffic/kt20030323_210.html#11threatened] trademark litigation[/url] against Machek and his employer SUSE Linux AG over the fact that Machek's BitBucket Web page mentioned the BitKeeper name. Machek complied and removed replaced that name with "", but it should be noted that McVoy's demand [url=http://linuxmafia.com/faq/Licensing_and_Law/trademark-law.htmlexceeded] the reach of trademark law[/url] and was toothless. (Disclaimer: I am not an attorney, and the above is not professional legal advice.) [/list] [i][Maintainer's personal comment: The obvious comparison to BK/Pro is IBM / Rational's very high-priced [url=http://linuxmafia.com/faq/Apps/vcs.html#clearcaseClearCase[/url]] tool, which I've used in the software industry. Having tried BitKeeper for a bit, I found it technically superior in every way — and it's dramatically cheaper. (On the other hand, 2005 has seen the rise of the remarkable, fast, stable open-source VCS "[url=http://linuxmafia.com/faq/Apps/vcs.html#hgMercurial[/url]", which should certainly be considered strongly, having much the same strengths except paid technical handholding.) [i] This document's entry for BK/Pro / BitKeeper initially had several mis-statements of fact, unflattering to the company, that I'd picked up by repeating uncritically some Linux developers' on-line assertions. I regret those errors, and caution people to be skeptical of such claims.]
[url=http://www.bitmanager.de/bitsafe/Home.doBitsafe[/url]] (Bitmanager-Media GmbH) ([url=http://linuxmafia.com/faq/Apps/vcs.html#bitsafelink[/url]) Bitsafe is a networked VCS coded in Java (JRE/JDK in version 1.4.2 or later required) and back-ended into either Oracle RDBMS or SAP-DB for its repository. Code is Java bytecode. Proprietary.
[url=http://www.applied-cs-inc.com/bcintro.html/BriefCase] 3 Toolkit/url ([url=http://linuxmafia.com/faq/Apps/vcs.html#briefcaselink[/url]) /BriefCase3 Toolkit is ACSi's enhanced networked variant on RCS wrapped inside acomprehensive development, release, and lifecycle toolkit. Networkaccess is via rsh transport for coordination of client and server-sidescripts, and NFS & pipes for data transport. NFS support has awell-developed locking structure. Administrative and private user tagmechanisms are provided. Client-side work areas can have multiple localreplicas, to work on differentreleases and/or aspects of a project. Import tools are provided forSCCS, CVS, RCS and PVCS data. Code is Korn shell and awk scripts. Open source (GNU GPL).
[url=http://cbe.sourceforge.net/CBE[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#cbelink[/url]) CBE (Code Building Environment) is Thomas Neumann's VCS coded in pure Java with integrated software build functions. Functionality is roughly similar to that of [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]] with some new features like renaming files (while still keeping the history) and using a database as backend (optional). Code is said to be alpha-stage (2005-04). Code is Java. Open source (GNU GPL).
[url=http://www.serena.com/product/cm_ds.htmlChangeMan] DS/url ([url=http://linuxmafia.com/faq/Apps/vcs.html#changemanlink[/url]) ChangeMan DS is a networked VCS integrated with build control, release management, a programmers' editor, software-distribution tools, and process control. It also integrates with SAP for packaged application management, and with various third-party IDEs. Serena Software is coy about pricing. The product was formerly known as ChangeMan and before that as Diamond CM — because it was written by Diamond Optimum Systems, which was acquired by Serena Software. (Even earlier, during its origins as an HP-3000 / HP/UX tool, it was called VCS-UX.) Binary-only. Proprietary.
[url=http://www.rational.com/products/clearcase/index.jspClearCase[/url]] (IBM / Rational Software, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#clearcaselink[/url]) ClearCase is a networked VCS whose repository one accesses using a quasi-filesystem of its own design, with integration to external software-build tools and adding some of its own. Supports advanced 3-way merge, versioning of any object (including directories), parallel builds distributed over a network, and triggers for local site customising. Linux usage requires loading a proprietary kernel module, said to freeze up frequently (at least that was true around 2001, not confirmed recently), and compatible only with particular kernels: See the ClearCase Linux Installation Guide Whitepaper for compatibility details.
They're extremely coy about pricing; probably you have to haggle on site-wide terms with their sales team. One claim is that ClearCase licenses tend to cost around US $5000/seat plus 20% per year for support.
ClearCase's history goes back to 1984, when a team at Apollo Computer created DSEE (Domain Software Engineering Environment), a VCS/build system. At the time of HP's purchase of Apollo, they left and formed Atria Software, which then merged with Pure Software, to form PureAtria, which was then bought by Rational Software. In 2002-12, Rational Software was bought by IBM Corp.
Binary-only. Proprietary.
[url=http://www.neuma.com/products.htmlCM+[/url]] (Neuma Technology, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#cmpluslink[/url]) CM+ integrates networked VCS with process control, build control, configuration management, product management, document management, problem tracking, activity tracking, requirements tracking, and release control. Neuma Technology is coy about pricing. Binary-only. Proprietary.
[url=http://wwwinfo.cern.ch/cmz/CMZ[/url]] (CodeME S.A.R.L.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#cmzlink[/url]) CMZ is a local-oriented (non-network-aware) system, supporting a wide range of VCS, coding, editing, and library-management functions. Linux binary is PPC-only (no x86). Binary-only. Gratis non-commercial usage. Proprietary.
[img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://bitconjurer.org/codeville/] Codeville/url][ ([url=http://linuxmafia.com/faq/Apps/vcs.html#cdvlink[/url]) Codeville (executable name "cdv") is Bram and Ross Cohen's fully decentralised (networked) VCS with some advanced merge methods, based on line identity: two-way merge with history. (It allows you to update from or commit to any repository at any time, with no unnecessary re-merges. Supports offline commits: Supports a workflow model where the repository is centralized, but the working tree is used as a branch.) Repository is stored in a binary BerkeleyDB database. History is stored in the form of changes from old hashed versions. Support for non-ASCII files and some metadata (e.g., execute bit) are still (2005-08) pending. SRP as authentication protocol, network access via (if I understand correctly) custom, built-in network transport to the "cdvserver" piece on TCP port 6601. File and directory renaming are supported. Code is now (2005-08) solid, with a small to-do list remaining. Still has nearly nil built-in documentation, and only a little more on the project Web site. Very well-designed but very unusual merge algorithm (aforementioned two-way merge with history). Code is Python script (Python 2.3 and up, BerkeleyDB 4.1 and up). Open source (newer BSD licence).
[url=http://www.nci-sw.com/control-cs.htmlControl-CS[/url]] (Network Concepts, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#controlcslink[/url]) Control-CS is a networked version-management system. (Earlier version was called Control.) Linux has server-end tool only; client-end software exists only for Win32. Binary-only. Proprietary.
cscvs ([url=http://packages.debian.org/unstable/devel/cscvs1[/url,[url=http://web.archive.org/web/20041013034649/http://wiki.gnuarch.org/moin.cgi/cscvs2[/url]) ([url=http://linuxmafia.com/faq/Apps/vcs.html#cscvslink[/url]) cscvs (now defunct) was a networked, decentralised VCS coded in Python, using [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]] as a back-end storage repository, imposing on top of CVS atomic changeset semantics (and with easy migration to [url=http://linuxmafia.com/faq/Apps/vcs.html#archarch[/url]). Code is Python script. Open source (BSD-style licence).
[url=http://cssc.sourceforge.net/CSSC[/url]] (Free Software Foundation) ([url=http://linuxmafia.com/faq/Apps/vcs.html#cssclink[/url]) CSSC (Compatibly Stupid Source Control) is a simple local-oriented (non-network-aware) reimplementation of the old SCCS (Source Code Control System) system from early Unix (pre-[url=http://linuxmafia.com/faq/Apps/vcs.html#rcsRCS[/url]), mostly used for access to old repositories (being not recommended for new data repositories), and (for a while but reportedly not any more), with [url=http://linuxmafia.com/%7Erick/linux-info/kernel-current-source-without-bitkeeperminor] modification[/url], to [url=http://linuxmafia.com/faq/Apps/vcs.html#bkBitKeeper[/url]] repositories. Uses weave storage, which makes it an [url=http://blog.fxa.org/articles/2005/09/30/bzr-weaving-its-way-to-the-frontexcellent] foundation[/url] for building advanced VCSs, despite CSSC/SCCS's antiquity. Fast, small, lightweight. Versions files (no changesets). Doesn't handle binary files. Does locking, uses a centralised (local) repository. No merging. Confusing command-line interface. Code is C. Open source (GNU GPL).
[url=http://ximbiot.com/cvs/CVS[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#cvslink[/url]) CVS (Concurrent Versions System) is the ubiquitous old-school default, but has serious flaws: No moves/renames, inefficient with binaries, no versioning of directories, no merge-history tracking (must be done manually through tagging), no atomic commits or retrievals (i.e., no atomic tree-wide operations), interacts badly with backup software, tends to leave stale locks, doesn't deal well with symlinks/special files, often gets into merging snarls, branching is often problematic and requires scrupulous attention to tagging, changes are tracked per-file instead of per-change, development is stagnant. Tagging and branching are expensive operations. No integrity checking: Prone to repository corruption. Derived from script wrappers by Prof. Dick Grune of the Free University of Amsterdam around the local-only [url=http://linuxmafia.com/faq/Apps/vcs.html#rcsRCS[/url]] system (written in 1984-5 and rewritten in C two years later by Brian Berliner), it added concurrency control, annotations, and other enhancements. History is stored separately from the working directory (in the central repository), and can contain many modules. Working copies are separate and contain one module each. Able to transact data across network connections since 1994, making CVS the first practical network-capable VCS. Existing project history can be revised, but only through special mechanisms. Syncing of repositories is possible using add-on software CVSup. Code is C. Open source (GNU GPL). [i] Maintainer's note: If you still use this thing, for heaven's sake upgrade to Subversion, or at least CVSNT.
[url=http://www.march-hare.com/cvsnt/CVSNT[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#cvsntlink[/url]) CVSNT started out to be an NT-only variant of [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]], but is now fully portable. It adds merge tracking, SSPI authentication, and a built-in copy of the PuTTY SSH code. Has per-branch ACLs, remote user administration using "cvs passwd" commands, a separate LockServer instead of filesystem-based locks, Unicode support, more-efficient storage of binary diffs, atomic checkouts, better handling of merges without tagging requirements, additional server triggers, etc. However, it retains many of CVS's disadvantages, including poor handling of renames, etc. Code is C. Open source (GNU GPL).
[img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://abridgegame.org/darcs/] darcs/url][ ([url=http://linuxmafia.com/faq/Apps/vcs.html#darcslink[/url]) DARCS (David's Advanced Revision Control System), more often called "darcs", is David Roundy's [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url-replacement] VCS, written in Haskell, handling all metadata, supporting fully decentralised repositories and advanced branching / patch-handling: Distributed merge is implemented via patch commutation. History is stored with the working directory. (Control files are stored inside the working directory tree.) Atomic commits. Supports renames. Existing project history can be revised (which is potentially a drawback: Interlopers can change what the history says). Patches from others can retain their separate identity even after integration (are not collapsed/rolled up) — and darcs also has the so-far unique advantage of being able to track inter-patch dependencies, and thus is the canonical example (and, really, the pioneer) of the concept of "cherry-picking" of patches and groups thereof. Based on tracking changesets (deltas). Fully functional (but slower) Win32 port; also works on MacOS X. Attempts to do all work entirely in RAM. Simple to use; easy to learn. Mature tool with active user community. No crypto checksum on the tree; no crypto signatures except on the transport. Does not guarantee than any past revision can be reproduced. Can be extremely slow when resolving merge conflicts. The Haskell language is a rather obscure functional language, known to but few, and additionally is reported to characteristically suffer unpredictable but sometimes severe performance problems. Because of the language's obscurity, there have been relatively few third-party contributions to the codebase. darcs also suffers from impenetrable, poorly designed error messages and diagnostics. Each repository can only hold a singlebranch of a single project: To create a new branch, you must createan entirely new repository. As of 2005-08, darcs's development branch is now alternatively able to work with [url=http://linuxmafia.com/faq/Apps/vcs.html#gitgit[/url]] repositories. David A. Wheeler's 2004-03 [url=http://www.dwheeler.com/essays/scm.htmlSCM] essay[/url] includes a brief description, and some thoughtful analysis, on darcs. Trent Buck published a [url=http://twb.ath.cx/%7Etwb/canon/words/darcs-bazaar.htmlcomparison[/url]] of darcs and Bazaar (bzr) and some comments on [url=http://twb.ath.cx/%7Etwb/canon/words/darcs-kludges.htmldarcskludges[/url]] in 2006. Code is Haskell. Open source (GNU GPL).
[url=http://www.elegosoft.com/index_dcvs.htmlDCVS[/url]] (Distributed Concurrent Versions System) (elego Software Solutions GmbH) ([url=http://linuxmafia.com/faq/Apps/vcs.html#dcvslink[/url]) DCVS extends the [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]] model, adding support for distributed repositories and local lines of development, using a variant of John D. Polstra's file distribution and synchronization program CVSup. Code is C. Open source (GNU GPL).
[url=http://www.mavris.com/products.shtmlDiscipline] 4GL/url ([url=http://linuxmafia.com/faq/Apps/vcs.html#disciplinelink[/url]) Discipline 4GL is a networked VCS, software-development, build control, and release-control tool. Saint Mavris Technology is coy about pricing. Binary-only. Proprietary.
[url=http://initd.org/pub/software/eva/Eva[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#evalink[/url]) Eva (now defunct) was Federico Di Gregorio's compatible Python implementation of the decentralised, networked [url=http://linuxmafia.com/faq/Apps/vcs.html#archArch] VCS specification[/url] — inspired in part by the need to transcendtechnical and portability limitations in Tom Lord's then-currentshell-script-based implementation, [url=http://linuxmafia.com/faq/Apps/vcs.html#larchLarch[/url]]. The project appears to havestalled as of Di Gregorio's 2003-04-13 snapshot code. Code is Python script. Open source (GNU GPL).
[url=http://www.zedshaw.com/projects/fastcst/FastCST[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#fastcstlink[/url]) FastCST (Fast Change Set Tool) is Zed Shaw's experimental,distributed, networked VCS, [re-] coded in Ruby, from Shaw's C original. (The Ruby version still lacks the original's revision control and encryption features, as of 2005-04.) Supports sending and receiving changesets via POP3 + SMTP; also works over http, http+ftp, or a built-in "serve" command (http access on port 3040). Merge command is (a/o 2005-04) only partially working: Basic merge is implemented,but without conflict resolution. Code is Ruby. Open source (GNU GPL).
[img]http://linuxmafia.com/faq/Apps/note.png/img][ git and related"porcelains": ([url=http://linuxmafia.com/faq/Apps/vcs.html#gitlink[/url]) [list][] "[url=http://git.or.cz/git[/url]", sometimes said to be short for "global informationtracker", is an extremely fast (especially for its 3-way patch mergesperformed using GNU diffutils's "diff3" utility — which, however,is relatively unsophisticated compared to other modern VCSes' mergealgorithms) object-addressable file-versioning/storage system developed with astonishing speed by Linus Torvalds with help from other Linux kernel developers starting 2005-04 as their primary source-management tool, after their licence to use [url=http://linuxmafia.com/faq/Apps/vcs.html#bkBitKeeper[/url]] was revoked. Starting with the 2005-07 1.0 release, git has been managed by Junio C. Hamano.
Like many recent VCS engines, git tracks/references checked-inentities by their SHA-1 cryptographic hashes, storing large datasetsnapshots (full data collections rather than diffs) concerning several such"entities" for each file checked in (in a pseudo-filesystem, completewith its own fsck utility), thus gaining speed at some cost in diskspace consumed. There is an optional space-efficient (but ratherkludgey and allegedly fragile), "packed" format that saves spaced and network bandwidth by delta-fying file revisions (i.e., transformingthem into a changeset format) where possible, that can be used with its "repack" command.
Commits are not signed; however, tags are. Also, Torvaldssimplified the problem domain by deciding to have git not handle filerenames/moves at all, nor some metadata such as time stamps. (Torvaldsfeels these are non-essential, believing for example that renaming footo bar should be treated as destroying foo and creating bar, and thattracking the movement of content between files, which it is intended todo eventually, is more important than filenames, which are justtransitory labels.) There is also no explicit [i] file "history"as such. Project history is stored as a directed acyclic graph, makinglong-lived branches and repeated merging simple. (Delete file, commit,create new file with the same name, commit, is a supported sequence ofoperations. After the file is re-created and committed in the finalstep, it inherits the history of the original file.)
Permissions and ownership appear not to be versioned; only theexecute bit is archived and preserved, of that class of metadata.
Binaries are of course versioned. Partial trees and per-filehistories are not supported (though the git core commands willextract the revisions that affected this file when asked for thehistory of a file).
As with other decentralised VCSes, each git checkout isa full-fledged repository with full revision tracking capabilities.Synchronization between repositories is done via explicit push/pulloperations. Location of the metadata/history information can be specified using environment variable GIT_DIR, thus allowing youto use less space in your working files area, have less cruft there, keep your version history on archival media, etc.
Networked access is supported, with SSH support built in, and nodedicated server component. The presence of GNU RCS is helpful formerge operations but not required.
There is a separate tool git-update-index, that for someoperations, e.g., add, but not others, e.g., mv, is required to updaterepository state for a file in the repository (before a commit).There is an "fsck" command to recover corrupted repositories.
Jeff Garzik has written a [url=http://linux.yyz.us/git-howto.htmlgit] HOWTO[/url]; an earliertutorial is provided with the source code's Documentation tree. Don Marti [url=http://zgp.org/pipermail/linux-elitists/2008-April/012451.htmlrecommended[/urlin] April 2008 some good tutorials, plus Zack Rusin has created a[url=http://zrusin.blogspot.com/2007/09/git-cheat-sheet.htmlgitcheat] sheet[/url].
git v. 1.2.2 through 1.2.4 was one of three VCSes seriously considered([url=http://www.opensolaris.org/os/community/tools/scm/git-eval.txt1[/url,[url=http://www.opensolaris.org/os/community/tools/scm/git-report-final.txt2[/url]) for hosting the very large OpenSolaris Project, and waseliminated on grounds of a half-dozen operational disadvantages anddesign flaws compared to (the winner) Mercurial.
Code is C, and depends on zlib, libcurl, and OpenSSL'slibcrypto to build, and rsync 2.6.0 or later to run. It thusappears to use rsync for network transport. Open source (GNU GPL).
[*] [url=http://kernel.org/pub/software/scm/cogito/Cogito[/url]] (formerly git-pasky) is Petr "Pasky" Baudis'sset of higher-level VCS services (a UI wrapper aka "porcelain") designedto complement the git engine, comprising an arguably complete VCS.Note: Cogito stores only one project per repository, but allows multiplebranches within a repository.
Cogito appears to use rsync, http, and ssh as network transports. It is written in bash shell script and thus is not portable to non-Unix systems, notably MS-Windows (absent Unix-ey retrofits such as Cygwin). Open source (GNU GPL).
The git/Cogito combination evolved rapidly during its first six months and achieved strong acceptance, but since 2006 has beenofficially deprecated, replaced by improvements in the git tool's ownnative user interface. As of 2007, the redoubtable Ted T'so [url=http://tytso.livejournal.com/29467.htmlrecommends[/url]] pure git 1.5.x, as less confusing than git + Cogito.
[] "[url=http://www.kernel.org/pub/software/scm/gitweb/gitweb[/url"is] a simple, one-file CGI/perl Web interface (a UI wrapper aka"porcelain") to track (view) changes in git repositories, written by KaySievers and Christian Gierke.
Code is Perl script. Open source (GNU GPL.)
[] "[url=http://ozlabs.org/%7Epaulus/gitk/gitk[/url]" is Paul Mackerras's Tcl/tk graphical front-end viewer for git (a UI wrapperaka "porcelain"), providing a three-paned window showing a reverse-timelist of committed patches, a graphical trace showing which tree eachpatch was merged from, tags, the selected patch and commit text, and alist of files that will be touched by the selected patch. It does notaspire to provide a full VCS superstructure similar to Cogito.
Patches can be searched by description, author, or SHA-1 tag,with regular expression support.
Code is Tcl script. Open source (GNU GPL).
[] "[url=http://sourceforge.net/projects/qgitqgit[/url"is] Marco Costalba's Qt-based graphical front-end viewer for git (a UIwrapper aka "porcelain"), showing a commit text and a patch list (onepatch per line, with annotations, making it easy to figure out whichcommit modified a specific piece of code). It does not aspire toprovide a full VCS superstructure similar to Cogito.
Double-clicking lines in the patch list bring up patches in "diff -up"format, in a separate window. There is a search/filter feature.
Code is C++. Open source (GNU GPL).
[] "[url=http://www.cyd.liu.se/%7Efreku045/gct/gct[/url]" (Git CommitTool) is Fredrik Kuivinen's GUI-enabled git commit tool (a UI wrapperaka "porcelain"), using the Qt graphics toolkit, permitting the user toselect which files should be committed, write commit messages, andperform the commit. It also has some support for controlling thesynchronisation between the git cache and the working directory.
Code is Python. Open source (GNU GPL).
[] "[url=http://www.procode.org/stgit/StGIT[/url]" (Stacked GIT) is Catalin Marinas's Python-based patch pusher/popper for git (thusfacilitating "cherry-picking"),[i] only : It does not aspire to provide a full VCS superstructuresimilar to Cogito.
Quoting the author: "The idea of StGIT is to keep a set ofpatches (tens usually) always on top of the main repository you aretracking until they get merged into it. At that point, the StGIT patchwould become empty and can be safely removed. StGIT is not intended tobe used as an VCS where you can create thousands of patches. You expectthe patches to be merged upstream and removed from the stack. It closelyfollows the [url=http://savannah.nongnu.org/projects/quiltQuilt[/url]] philosophy."
Code is Python script. Open source (GNU GPL).
[*] "[url=http://members.cox.net/junkio/JIT[/url]" ([i] unmaintained, deprecated! ) was Junio C. Hamano's VCS layer built on top of git, supporting a workflowbased on manipulating patches. Its snapshot mechanism, rewind, patch,and ipatch commands are intended to help "individual developer"users (as opposed to "project lead" ones) first develop a working version in a random order, and then refactor the working version into a clean sequence of changes to be fed upstream. Deliberately does not support per-file commits, on grounds of that being bad workflow: Developers are helped to work with snapshots and patches, instead.(Snapshots are local commits within the work tree, implemented as git commit objects, and are encouraged.)
Code is shell scripts and C — but [i] the codebase isunmaintained, has not kept up with git's development, and is deprecated by its author . Licence unstated.
[/list]
[url=http://gnuarch.org/GNU] Arch 1.x ("tla")/url GNU Arch 1.x (executable name "tla", for Tom Lord's Arch) is Tom Lord's second (compatible) implementation, this time in C, of his decentralised, networked [url=http://linuxmafia.com/faq/Apps/vcs.html#archArch] VCS specification[/url]. It is now (2006) maintained by Andy Tai. Very complex, arguably overfeatured system. Does star-merge. Patches from others can be collapsed/rolled up upon integration so as to lose their separate identities. Atomic commits. Supports renames. Commits are gnupg-signed. Parseable/scriptable shell interface; uses tar, gzip, and patch. Changelogs are autogenerated. Uses weird, often problematic filenames featuring (e.g.) leading "++", ",,", "=", and "{ ... }" sequences. Uses inode signatures to detect file modifications, leading to some false alarms, e.g., when copying a tree. Uses MD5 hashing (insecure) for archive verification; will eventually move to SHA-1: Only patches (not complete revisions) are signed. Uses sequence, rather than time, to determine precedence of changes. Can use ftp, sftp, WebDAV, and plain http transport. Relies on ssh for remote access, authentication, and confidentiality. Changesets can be also conveyed via e-mail. A dedicated arch-server component isn't really needed, but has been [url=http://lists.gnu.org/archive/html/gnu-arch-users/2004-01/msg01069.htmlprototyped[/url]], or alternatively one could use Colin Walters's Python-based [url=http://lists.gnu.org/archive/html/gnu-arch-users/2004-01/msg01069.htmlarchd[/urlsoftware] and matching protocol (using TCP port 2420).
Interested parties will find Nick Moffitt's concise and focussed "[url=http://www.linuxjournal.com/article.php?sid=7604%3EArchArch] for CVS Users[/url]" tutorial an excellent place to start.
David A. Wheeler's [url=http://www.dwheeler.com/essays/scm.htmlSCM] essay[/url] points out some of GNU Arch's current (2004-03) problems: (1) The Win32 port is currently missing quite a few features (symlinks, most file permissions, correct handling of newlines), and in general GNU Arch may never be fully functional on non-POSIX systems. (2) The repository's file-naming conventions use very badly chosen special characters that tend to break vi, more, the C shell, various scripting languages, and other primary tools. (3) Automated cache management is missing (making the program slow by default), and is badly needed. (4) Merging breaks if branches aren't either all commit-based or all tag-based, but the tool doesn't enforce that limitation. (5) "mv" and "move" do very different things, and in general the full command set is needlessly complex.
Wheeler considered almost all of these to be short-term problems.
Lord had released, working entirely by himself, three development betas of a GNU Arch 2.0 redesign (executable name "revc") incorporating ideas from Bazaar ("bzr"), git, and Monotone, including a belated switch from MD5 to SHA-1 checksums. However, my guess is that the 2.0 effort (at minimum) is now (2005-08) defunct.
The GNU Project adopted tla as "GNU Arch" in 2003-07. Code is C. Open source (GNU GPL).
[i] Maintainer's personal note: In my opinion, GNU Arch's implementation flaws are sufficiently grievous that people considering its use should hasten to substitute Canonical's compatible replacement, [url=http://linuxmafia.com/faq/Apps/vcs.html#bzrBazaar] ("bzr")[/url], in its place.
[i][i] It appears that I'm not alone in this perception: Asof 2005-08-15, Tom Lord announced that he was[url=http://lists.gnu.org/archive/html/gnu-arch-users/2005-08/msg00030.htmlresigning] effective immediately[/url] as GNU Arch maintainer, endorsed Bazaar 1.x ("baz") as an immediate direct replacement, and expressed hope that Bazaar ("bzr") will eventually take its place, in turn. The main GNU Arch developers other than Lord had already left that project, by that point, and had become Bazaar 1.x coders.
[i] 2005-10 update: Developer Andy Tai has [url=http://lists.gnu.org/archive/html/gnu-arch-users/2005-10/msg00246.htmltaken] over the GNU Arch project lead, and it has resumed.[/url]
[url=http://jrms.sourceforge.net/JRMS[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#jrcslink[/url]) Java Revision Control System was a project for a lightweight Java non-changeset-oriented VCS that was to run over Java RMI (remote method invocation), abandoned by its author while still in late planning stages when he discovered [url=http://linuxmafia.com/faq/Apps/vcs.html#svnSubversion[/url]].
Code is Java. Open source (GNU GPL).
[url=http://www.netcraft.com.au/geoffrey/katie/Katie[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#katielink[/url]) Katie (defunct) was a local-oriented (non-network-aware) system, where the repository is mounted as a filesystem, as with [url=http://linuxmafia.com/faq/Apps/vcs.html#clearcaseClearCase[/url]]. Abandoned in pre-alpha state. Code is Perl script. Open source (GNU GPL).
[url=http://regexps.srparish.net/src/larch/Larch[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#larchlink[/url]) Larch (now defunct) was Tom Lord's initial "functional prototype" implementation of the fully decentralised, networked [url=http://linuxmafia.com/faq/Apps/vcs.html#archArch] VCS specification[/url]. It was initially named "arch", but was then renamed to Larch because of a naming conflict. (/bin/arch on a POSIX system returns its machine architecture type.) Larch's reliance on shell scripts caused it to be often pronounced less portable than alternatives. Could function over ftp, sftp, WebDAV, and plain http transport. Replaced by C-based [url=http://linuxmafia.com/faq/Apps/gnuarchGNU] Arch/tla[/url] and numerous competitors inspired in part by Larch's drawbacks. Code is shell scripts. Open source (GNU GPL).
[img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://www.selenic.com/mercurial/] Mercurial/url][ ([url=http://linuxmafia.com/faq/Apps/vcs.html#hglink[/url]) Mercurial (executable name "hg"), by Matt Mackall, is a distributed VCS inspired by certain of[url=http://linuxmafia.com/faq/Apps/vcs.html#monotoneMonotone's[/url]] design elements, and said to be similar insome ways to [url=http://linuxmafia.com/faq/Apps/vcs.html#gitgit[/url/Cogito], but storing changes instead of whole files, saving storage and making some functions related to file history easier to perform. Very compressed storage, as a result. Note: Mercurial stores only oneproject per repository, but allows multiple branches within a repository.Control files are stored inside the working directory tree. Uses SHA-1 hashes of changesets for integrity-checking, supportsfully decentralised operation and arbitrary merging. Merging keeps allmetadata on each changeset (committer, message, etc.). Everything is abranch. Provides command-line and Web interfaces. Uses http and ssh asnetwork transport. Can also use e-mail as transport ("hg export" to exportchangesets, mail the changesets, then "hg import"). Changeset numbers are referred to by sequential numbers. "hg serve" starts a built-in Web server, and serves up the branch for "pull" access. Renames, deletes, and permissions are versioned, but rename isimplemented as copy and delete. (Fortunately, a file created with thesame path as one deleted inherits the old file's history.) No supportfor partial trees. Per-file history is available by specifying the filename with "hg log". No direct support for "cherry-picking": However, anequivalent can be achieved by exporting specific patches from one repo(branch), and importing them into another repo. Repositories are normally fully independent, but can beconfigured to have a [url=http://www.opensolaris.org/jive/message.jspa?messageID=30643&tstart=0defacto] parent[/url]. Network access is supported via SSH, http (in "pull"mode) and of course network filesystems. There is no built-in facilityfor controlling access (via ACLs) to subtrees. Repository internal storageformat is binary (hence, fast) but platform-neutral. Offering repo access via plain http ("pull") access from commodity Web servers (a very desirable feature) is complicated (2005-09) by the fact that the "[url=http://www.selenic.com/pipermail/mercurial/2005-September/004658.htmlpreferred] method[/url]" for publishing such a repo requires uploaders to continually first create "bundles" to hold the contents, and for downloaders to know that things are bundled, and (apparently) even to know what the bundles are named. Mercurial was one of three VCSes seriously considered([url=http://www.opensolaris.org/os/community/tools/scm/mercurial-eval.html1[/url,[url=http://www.opensolaris.org/os/community/tools/scm/dcm_evaluation_mercurial2[/url) for] hosting the very large OpenSolaris Project, and was the final winnerover git and Bazaar. Sebastien Pierre maintains a useful[url=http://www.ivy.fr/mercurial/ref/v1.0/Mercurial] cheat sheet[/url]. Code is a small Python script, and is fullycross-platform. Open source (GNU GPL).
[url=http://users.footprints.net/%7Ekaz/mcvs.htmlMeta-CVS[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#metacvslink[/url]) Meta-CVS (now defunct), by Kaz Kylheku, is an ambitious attempt to update [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]] by embedding the standard CVS client in Lisp wrappers, which cause an enhanced data representation to be stored in the CVS repository. Adds directory versioning, renames/moves, support for symlinks and file metadata, simpler branching and merging, persistent memory of each file type being declared (and to be treated as) binary or text after it's been imported or added the first time. Commits are not atomic; the author's algorithm for atomic commits has been proposed but not yet adopted for both CVS and Meta-CVS. Code is Lisp. Open source (GNU GPL).
[img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://www.venge.net/monotone/] Monotone/url][ ([url=http://linuxmafia.com/faq/Apps/vcs.html#monotonelink[/url]) Monotone (executable name "mtn") is Graydon Hoare's 2003 distributed (networked) VCS with a flat peer model, cryptographic (SHA-1) version naming and metadata certificates (SHA-1 identification of all files, directories and revisions), decentralized authority, atomic commits, versioned file and directory renames (unlike, say, [url=http://linuxmafia.com/faq/Apps/vcs.html#hgMercurial[/url]), and overlapping branches. Supports file/directory copies that retain version history. Distributed merging is implemented via 3-way merge. Tracks changesets (deltas). Identifies revisions using chained hashes, requiring only one signature to authenticate a line of development. Uses rename history instead of file-IDs to determine file identity. Monotone works out of a transactional version database stored in a regular file (using sqlite). Network communication is mediated via HTTP, netnews (NNTP), or SMTP transport. Code is C++ and Lua. Mechanisms such as cryptographic hashing are too exposed for many people's tastes. Nice graph tool. Good manual and Web pages. Project is now self-hosting, and while still being experimental now (2005-05) has a stable database schema and a reliable datastore.
Note: One of the reasons Linus Torvalds started the "[url=http://linuxmafia.com/faq/Apps/vcs.html#hggit[/url]" project is that he tried Monotone, and liked many of its aspects, but found it unacceptably slow at the time (but not as slow as [url=http://linuxmafia.com/faq/Apps/vcs.html#darcsdarcs[/url]). Monotone has gained performance considerably since that time, when the designer had not yet found and fixed a serious performance bug. It is reported (2005-08) that the "initial pull" initial repository clone still takes quite a long time, but that this is being worked on. (2008 update: That has now been addressed.)
David A. Wheeler's 2004-03 [url=http://www.dwheeler.com/essays/scm.htmlSCM] essay[/url] includes a brief rundown on Monotone.
Tool works on Unixes including MacOS X, plus Win32. Beta as of 2005-04.
Code is Lua and C. Open source (GNU GPL).
[url=http://www.opencm.org/OpenCM[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#opencmlink[/url]) OpenCM (now defunct), by Jonathan Shapiro, was another intended [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url-replacement], supporting renames, access control on branches, cryptographic authentication (SHA-1 hashes), atomic commits, end-to-end integrity controls, and file-level ACLs. Directories are inferred by having files that exist under them; empty directories are a special case with an object of type DIR. It was still in early development when the project (apparently) stalled a/o 2004-10-24. Code is C. Open source (2-clause BSD licence with some GNU GPL; aiming to move to Common Public Licence).
[url=http://www.ouraysoftware.com/OurayCM[/url]] (Ouray Software L.L.C.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#ouraycmlink[/url]) OurayCM is a networked VCS supporting renames, branching including per-user branching with automatic merge tracking, built-in cache servers, tools to assist conflict resolution, and atomic commit operations. GUI and command-line tools are provided for the various platforms. The release-tagging feature is called "vrefs". Binary-only. Proprietary.
[url=http://www.perforce.com/perforce/price.htmlPerforce[/url]] (Perforce Software, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#perforcelink[/url]) Perforce is a networked VCS with emphasis on high performance, using [url=http://linuxmafia.com/faq/Apps/vcs.html#rcsRCS[/url]] files plus a database. Supports versioning of most objects (but notably not directories), change control, shared access, atomic commits, branching/merging, and auditing for software production teams. Renames not directly supported: you copy and then delete but it manages to keep track of the branch. Supports file/directory copies that retain version history. Costs US $750 for a single licence. Quantity discounts, and gratis licences to open-source developers upon request. Binary-only. Proprietary.
[url=http://prcs.sourceforge.net/PRCS[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#prcslink[/url]) PRCS (now defunct) was a promising project (particularly the 2.x development branch) that had been progressing slowly; source code tree is in anoncvs.gnome.org . Unfortunately, there has been no sign of progress towards release since 2001. It handled files and directories as an entity, preserving coherent versions of the entire set. Had named branches, custom keyword replacement. Best-parent three-way merge algorithm. Users were allowed to edit the manifest file, which also contains some system-maintained data. No network support; no Win32 or Mac support. Code was C++. Open source (GNU GPL).
[url=http://www.synergex.com/solutions/pvcs/PVCS[/url]] (Synergex International Corp., under licence from Merant, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#pvcslink[/url]) PVCS is a local-oriented (non-network-aware) VCS and build-control system with client software for just about all OSes. Merant, which wrote the code, was formed by the merger of MicroFocus and Intersolv. Binary-only. Proprietary.
[url=http://www.qef.com/html/QEF[/url]] (QEF, Inc., formerly QEF Advanced Software, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#qeflink[/url]) QEF is a complete software-management/build system that includes a wrapper to use third-party VCSes such as [url=http://linuxmafia.com/faq/Apps/vcs.html#rcsRCS[/url]], SCCS, and [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]]. (It is often listed as an VCS, but technically includes no VCS component of its own.) Binary-only. Proprietary.
[url=http://www.visible.com/Products/Razor/Razor[/url]] (Visible Systems Corporation) ([url=http://linuxmafia.com/faq/Apps/vcs.html#razorlink[/url]) Razor (developed by Tower Concepts, Inc., which was acquired in 1998-12 by Visible Systems Corporation) offers VCS integrated with trouble-ticketing and project and release management. The Linux version appears to work only on 2.0 and 2.2 kernels. Visible Systems is trying to extend this into a comprehensive IDE. Concurrent licences are available in blocks of 5 for US $3,700, with quantity discounts, and optional annual maintenance contracts (with upgrades) are about 15% additional. Binary-only. Proprietary.
[url=http://www.ipd.uka.de/%7Edurasoft/frame_en.htmlRCE[/url]] (DuraSoft GmbH) ([url=http://linuxmafia.com/faq/Apps/vcs.html#rcelink[/url]) RCE (Revision Control Engine) is a local-oriented (non-network-aware) VCS, designed to improve on [url=http://linuxmafia.com/faq/Apps/vcs.html#rcsRCS[/url]], with an optional graphical front-end (Visual RCE), created by Walter F. Tichy, creator of RCS. Supports any data format, parallel development, automatic history. There is a Java-based GUI front-end. Binary-only. Proprietary.
RCS ([url=http://www.cs.purdue.edu/homes/trinkle/RCS/1[/url]], [url=http://www.gnu.org/software/rcs/rcs.html2[/url]) (Free Software Foundation) ([url=http://linuxmafia.com/faq/Apps/vcs.html#rcslink[/url]) RCS (Revision Control System), originally written by Walter F.Tichy at Purdue University in the early 1980s, is a simplelocal-oriented (non-network-aware) VCS, often considered somewhat more advanced than [url=http://linuxmafia.com/faq/Apps/vcs.html#csscCSSC[/url/SCCS], and yet (as it turns out) much less useful as the foundation of an advanced system. Implements locking and a centralised (local) repository. Supports tags, and symbolic names for revisions. Supports versioning of binary files if you're careful to disable keyword expansion. Has a (primitive) merge function. History (implemented as a series of deltas backwards from the tip versionof each file handled) is stored in the working directory.
Code is C. Open source (GNU GPL).
[url=http://www.bell-labs.com/project/sablime/Sablime[/url]] (Lucent Technologies, Inc.) ([url=http://linuxmafia.com/faq/Apps/vcs.html#sablimelink[/url]) Sablime appears to be a well-rounded networked system. Lucent Technologies is coy about pricing. Predecessor codebase: AT&T's internal CMS & ECMS VCS systems. Lucent Technologies was formerly AT&T Software Solutions. Binary-only. Proprietary.
[url=http://sccs.berlios.de/SCCS[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#sccs%22link[/url]) SCCS (Source Code Control System) is the oldest VCS, alocal-oriented (non-network-aware) system developed in 1972 by Marc Rochkind at Bell Labs on an IBM System/370 running OS/MVT. It's the first change-management system to record a distinct identifier for each revision and keep a clear revision history. Version numbers are in format "major.minor". Uses weave storage, which makes it an [url=http://blog.fxa.org/articles/2005/09/30/bzr-weaving-its-way-to-the-frontexcellentfoundation[/url]] for building advanced VCSs, despite SCCS's antiquity. Does locking, uses a central repository. Versions files (doesn't dochangesets). Doesn't handle binary files. No merging. Confusingcommand-line interface. Code is C. Open source (CDDL, GNU GPL, GNU LGPL).
[url=http://kisocd.sf.net/siveco.htmSiVeCo[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#sivecolink[/url]) SiVeCo (Simple Version Control) is Jens Wilhelm Wulf's basic VCS, designed for use by someone working alone on smaller projects. It is self-contained, but requires a filesystem supporting symbolic links (and therefore cannot run on Win32). Code is C++. Open source (GNU GPL).
[url=http://www.truebluesoftware.com/SnapshotCM[/url]] (True Blue Software Company) ([url=http://linuxmafia.com/faq/Apps/vcs.html#snapshotcmlink[/url]) SnapshotCM (formerly TrueCM) is a multi-platform, networked VCS with easy merging and branching, storing most files in RCS storage. Integrates with sundry IDE front-ends using Microsoft's SCC application interface. Binary-only. Proprietary.
[url=http://potiron.loria.fr/documentation/so6-user-manualSo6[/url([url=http://linuxmafia.com/faq/Apps/vcs.html#so6link[/url)] So6 is a 100% Java networked VCS intended to be used as part of the LibreSource development environment, where diffs get checked in by various users into a message queue, which then generates an event and consequent messages to notify other users of their availability. Instead of branches, there are multiple message queues with which the user can elect to synchronise. Network access is mediated via Sun Java Web Start over generic http transport.
Code is Java. Open Source (QPL v. 1.0).
[url=http://www.mks.com/products/sis/Source] Integrity/url ([url=http://linuxmafia.com/faq/Apps/vcs.html#sourceintegritylink[/url]) MKS Source Integrity seems to be a local-oriented(non-network-aware) VCS designed to integrate with various MS-Windows IDEs and Mortice Kern Systems Inc.'s workflow management software. Does automatic merging, supports event triggers. Binary-only. Proprietary.
[url=http://sourcejammer.sourceforge.net/SourceJammer[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#sourcejammerlink[/url]) SourceJammer is a 100% Java networked system with renames/moves, requiring Jakarta Tomcat or Apache / Resin, the proprietary Sun JDK / JavaBeans / JavaMail , Apache SOAP and Xerces. Does labels, but it's unclear from the docs whether it does branching. Said to be suitable for small-to-medium projects, in being simple and easy to understand. Code is Java. Open source (GNU GPL and LGPL).
[url=http://www.sourceoffsite.com/SourceOffSite] Classic/url ([url=http://linuxmafia.com/faq/Apps/vcs.html#sourceoffsitelink[/url]) SourceOffSite Classic is a networked tool for users of various operating systems to remotely use Microsoft Visual SourceSafe repositories. Linux client works on Linux 2.2.x kernels. Binary-only. Proprietary.
[url=http://www.borland.com/starteam/StarTeam[/url]] (Borland Software Corporation, formerly Starbase Corporation) ([url=http://linuxmafia.com/faq/Apps/vcs.html#starteamlink[/url]) StarTeam is a networked VCS with support for various MS-Windows IDEs via the Microsoft Source Code Control (SCC) application interface, and integrated defect tracking and threaded discussions. There's a Java-based Linux client piece. Code is Java bytecode. Proprietary.
[url=http://archive.eclipse.org/technology/archives/stellation-project.tar.gzStellation[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#stellationlink[/url]) Stellation is an extensible system with project-oriented versioning and lightweight branching, which back-ends into common relational databases, such as PostgreSQL, Oracle, Firebird, and DB2 (with MySQL support in progress). It runs either standalone, or with an Eclipse plugin allowing it to be integrated into the Eclipse IDE. It fixes typical [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]] problems, e.g., it handles moves and renames correctly, registers changes affecting multiple files as an atomic changeset, and maintains full project history through merges without manual measures. Code is Java. Open source (Common Public Licence).
[img]http://linuxmafia.com/faq/Apps/note.png/img] url=http://subversion.tigris.org/] Subversion/url][ ([url=http://linuxmafia.com/faq/Apps/vcs.html#svnlink[/url]) Subversion (aka SVN; executable name "svn") is specifically designed as a [url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]] replacement (developed starting 2000), fixing all of the long-known design flaws in CVS: It adds versioning of directories, intelligent handling of binary files, and handling of all file metadata including symlinks (missing: to be fixed post-1.0). Revision numbering is per-commit instead of per-file. Atomic commits. Supports file/directory copies that retain version history. The repository stores snapshots of works, not changesets (deltas). As with CVS, Subversion follows a centralised development model; this is not a distributed, decentralised VCS, though the [url=http://linuxmafia.com/faq/Apps/vcs.html#svkSVK[/url]] extensions adapt Subversion to create one. Designed-in network operations are over either WebDAV, or a lightweight custom protocol called svnserve, which runs on port 3690 and can be anonymous or authenticated by a svnserve-specific password file. Alternatively, svnserve can provide authentication through SSH. No history-sensitive merging (no merge history tracking) as in [url=http://linuxmafia.com/faq/Apps/vcs.html#gnuarch%22GNU] Arch/tla[/url]: Trying to reapply a patch more than once can cause problems. Uses rename history instead of file-IDs to determine file identity. Existing project history can be revised, but only through special mechanisms. Original Subversion repository design used the BerkeleyDB database as a back-end store; in more recent versions, you can optionally use a filesystem/flatfile-based "fsfs" store if you prefer. Despite ubiquitous claims to the contrary from its proponents and from the program's official features list, it has turned out (2005) that Subversion [url=http://www.livejournal.com/users/bramcohen/4563.html?thread=33747#t33747cannot] handle file renames[/url]: Renames are implemented as deletion of the old file and separate copy to a new file, with the result that the file's version history gets broken. As Codeville's Bram Cohen points out, this "is even worse behavior than CVS has". David A. Wheeler's 2004-03 [url=http://www.dwheeler.com/essays/scm.htmlSCM] essay[/url] enumerates Subversion's virtues and limitations. Ariejan de Vroom maintains a useful [url=http://ariejan.net/svncheatsheet/SVN] cheat sheet[/url]. Code is C, with a fairly lengthy dependency tree. Open source (Apache Software Licence v. 1.1).
[url=http://www.superversion.org/Superversion[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#superversionlink[/url]) Superversion is Stefan Reich's networked, distributed, changeset-based VCS. Atomic commits. No rename support. Server access is mediated by Java RMI. GUIfied for all operations. Code is Java: Program functions anywhere that Java does. Open source (GNU GPL).
[url=http://www.seapine.com/surroundscm.htmlSurround] SCM/url ([url=http://linuxmafia.com/faq/Apps/vcs.html#surroundlink[/url]) Surround SCM is a multi-platform, networked VCS. Flexible branching model, with support for private branches. Integrates with sundry IDE front-ends using Microsoft's SCC application interface. Licences are US $600/user with quantity discounts. Binary-only. Proprietary.
[url=http://svk.elixus.org/SVK[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#svklink[/url]) SVK is a Perl-based, networked, (mostly) decentralised/disconnected VCS released by Chia-liang Kao in Sept. 2003, using the [url=http://linuxmafia.com/faq/Apps/vcs.html#svnSubversion[/url]] back-end storage repository but also adding distributed branches, lightweight checkout copy management, and more-advanced merging algorithms. Near future plans include cryptographic signing and verification of changesets, graphical merge manager, transparent VCP integration of alien-type VCS repositories ([url=http://linuxmafia.com/faq/Apps/vcs.html#cvsCVS[/url]], etc.) As of v. 8.08, 2004-02, SVK was described as being in "working prototype" stage; users are cautioned that all things are subject to change. As of 2005-04, it was still said to be a bit flaky, probably in part because the composite SVK/SVN system is fairly "heavyweight" (a tall software stack). Little documentation. Control files are [i] not stored inside the working directory tree, similar to with [url=http://linuxmafia.com/faq/Apps/vcs.html#perforcePerforce[/url]]. Requires CGI on server end. Fast. Good integration with external merge tools. Code is Perl script. Open source (Perl Artistic Licence).
[url=http://www.telelogic.com/Synergy/CM[/url]] (Telelogic AB) ([url=http://linuxmafia.com/faq/Apps/vcs.html#synergylink[/url]) Telelogic Synergy/CM, (formerly CM Synergy, formerly Continuus/CM) appears to be a networked client-server system that back-ends into an SQL database (not included) and includes workgroup-management features. Atomic commits. Supports renames. Supports file/directory copies that retain version history. Telelogic (which acquired Continuus Software Corp., formerly CaseWare, Inc., formerly Amplify Control) is coy about pricing, but, in 2000-05, CM Synergy was US $25,000 for 10 users. Binary-only. Proprietary.
[url=http://www.mccabe.com/truechange.phpTrueChange[/url]] (McCabe & Associates) ([url=http://linuxmafia.com/faq/Apps/vcs.html#truechangelink[/url]) TrueChange is some sort of changeset-based VCS. Web site is vague: It seems respected, if obscure, and was formerly known as Aide-de-Camp. McCabe is very coy about pricing. Binary-only. Proprietary.
[url=http://www.georgejames.com/VC/m[/url]] (George James Software) ([url=http://linuxmafia.com/faq/Apps/vcs.html#vcmlink[/url]) VC/m appears to be a local-oriented (non-network-aware) VCS with process control. Most operations can be optionally performed from a Web browser. Binary-only. Proprietary.
[url=http://www.vestasys.org/Vesta[/url]] ([url=http://linuxmafia.com/faq/Apps/vcs.html#vestalink[/url]) Vesta is a fairly robust configuration-control and software-building system developed by/for the Digital Equipment Corp. Alpha processor team, but does not yet include tools to implement merges. Atomic commits. Renames are supported: The unit of checkout/checkin is a directory tree. Files and directories can be added, deleted, and renamed between versions. Supports file/directory copies that retain version history: A new package/branch can be based on any existing version without affecting the past history. David A. Wheeler's 2004-03 [url=http://www.dwheeler.com/essays/scm.htmlSCM] essay[/url] includes a brief rundown on Vesta. Code is C++. Open source (GNU LGPL).
More tools can be found at [url=http://www.faqs.org/faqs/by-newsgroup/comp/comp.software.config-mgmt.htmlurl] http://www.faqs.org/faqs/by-newsgroup/comp/comp.software.config-mgmt.html[/url/url][] (comp.software.config-mgmt FAQ). I've attempted to include all options listed there that have a Linux presence. Ross Cohen maintains the [url=http://revctrl.org/RevctrlWiki[/url]], linking to the related [url=http://lists.zooko.com/mailman/listinfo/revctrlRevctrl] mailinglist[/url] administered by Zooko (Bryce Wilson) and logs of the #revctrlIRC channel on freenode.net, all of which are the leading forums for discussion among developers of advanced open-source VCSes. [url=http://planet.revisioncontrol.net/RCS] Planet[/url] tracks the weblogs of VCS developers. [url=http://versioncontrolblog.com/Version] Control Blog[/url] houses Alexey Makhotkin's writings on the subject. Further VCS information may be findable at the [url=http://dmoz.org/Computers/Software/Configuration_Management/Tools/Open] Directory CM category[/url], [url=http://better-scm.berlios.de/Better] SCM Initiative[/url], including a [url=http://better-scm.berlios.de/comparison/comparison.htmlcomparison] page[/url], Zooko's (Bryce Wilson's) [url=http://zooko.com/revision_control_quick_ref.htmlquick-reference] comparison chart[/url], [url=http://www.cmcrossroads.com/CM] Crossroads[/url], [url=http://www.paper-review.com/tools/tdb/home.phpINCOSE[/url]], Oy Laatukonsultointi P. Kantelinen Ab's [url=http://www.laatuk.com/tools/SCM_tools.htmlSCM] Tools page[/url], [url=http://www.ovum.com/Ovum], Ltd.[/url], or the [url=news://comp.software.config-mgmt] comp.software.config-mgmt[/url] newsgroup. See also David Wheeler's perceptive [url=http://www.dwheeler.com/essays/scm.htmlComments] on OSS/FSSoftware Configuration Management (SCM) Systems/url, Kevin Smith's blog's [url=http://web.archive.org/web/20061206073756/http://blog.fxa.org/articles/category/scmSCM] category[/url],and Bram Cohen's blog's SCM items ([url=http://www.livejournal.com/users/bramcohen/17319.html1[/url]], [url=http://www.livejournal.com/users/bramcohen/17925.html2[/url) and] the OpenSolaris project's [url=http://www.opensolaris.org/os/community/tools/scm/comparativeSCM] evaluations[/url]. Also extremely worth reading is Martin Pool's [url=http://sourcefrog.net/weblog/software/vc/derivatives.htmlessay[/url]], in which he compares and contrasts VCSes that capture snapshots (Subversion, CVS) with those that capture changesets (GNU Arch, darcs), and explains why the latter win as projects become more complex.