← Revision 100 as of 2009-05-14 18:26:53
converted to 1.6 markup
|Deletions are marked like this.||Additions are marked like this.|
|Line 1:||Line 1:|
|/!\ This chart is a rough draft /!\||There was a comparison of version control systems here, but it was of limited use and has been removed. See instead the [[Bzr]] feature list.|
|Line 3:||Line 3:|
|This page is a user-oriented comparison of different revision control system. For a more technical comparison, see ["RCSChoices"]. See also ["SCMComparisons"] (note: this may be better to move the content of this page here) for a brief presentation of each system and how they compare to Bazaar-NG in particular. The determination on this chart is based upon the core installation and features that are already working in devel.
= Overview =
||RCS Name ||Bazaar-NG||Arch||CVS ||Subversion||Git ||Mercurial||Monotone||Darcs||
||Decentralized ||Yes ||Yes ||No ||No ||Yes ||Yes ||Yes ||Yes ||
||Disconnected Ops ||Yes ||Yes ||No ||No ||Yes ||Yes ||Yes ||Yes ||
||Simple Namespace ||Yes ||No ||No ||Yes ||No ||Yes ||No ||Yes ||
||Supports Renames ||Yes ||Yes ||No ||Yes ||Somewhat ||Yes ||Yes ||Yes ||
||Needs Repository ||No ||Yes ||Yes ||Yes ||No ||No ||No || ||
||Checkouts ||Yes ||No ||Yes ||Yes || ||No || ||No ||
||Atomic Commit ||Yes ||Yes ||No ||Yes || ||Yes ||Yes || ||
||[:Merge:Smart Merge] ||Yes ||Yes ||No ||No ||Yes ||Yes ||Yes ||Yes ||
||[:CherryPick:Cherrypicks] ||Yes ||Yes ||Yes ||Yes || ||Yes ||Yes ||Yes ||
||[:BzrPlugins:Plugins] ||Yes ||No ||No || || ||Yes || || ||
||Has Special Server ||No ||No ||Yes ||Yes || ||Optional || || ||
||Req. Dedicated Server ||No ||No ||Remote||Remote ||No ||No ||No ||Yes ||
||Good Windows support ||Yes ||No ||Yes ||Yes ||No ||Yes || || ||
||Fast Local Performance || ||No ||Yes ||Yes ||Yes ||Yes ||Yes ||No ||
||Fast Network Performance ||Soon ||No ||Yes ||Yes ||Yes ||Yes ||Yes ||No ||
= Details about each feature =
== Decentralized ==
Whether the tool is designed to allow [:Branch:branches] of the same project to be in different remote [:Repository:repositories].
== Simple Namespace ==
The namespace is the way the RCS communicates with the user the various resources for the RCS such as the names for branches and the names for [:Revision:revisions] that are [:Merge:merge]. For example: requiring the user to refer to revisions with base-16 numbers is not considered "simple" in this document.
== Needs Repository ==
Some revision control systems require that branches be aggregated into [:Repository:repositories].
== Supports Renames ==
If a user can rename a file in the RCS without loosing the RCS history for a file, then renames are considered supported. If the operation resultes in a delete/add (aka "DA pair"), then renames are not considered supported.
== Has Checkouts ==
A ["Checkout"] is a [:WorkingTree:working tree] that points elsewhere for its RCS data.
== Atomic Commit ==
Does the RCS track which files were associated with which [:Commit:commit].
== Smart Merge ==
Whether the tool is able to know which revisions have to be merged (recording [:Merge:merge] history is a necessary condition for this).
== Cherrypicks ==
Whether the tool allows CherryPick (fine-grained selection of revisions to be merged).
== Plugins ==
Whether the tool is extensible with plugins. Our plugins are on the BzrPlugins page.
== Can use standard fileserver ==
Whether the tool can work with a standard file server (HTTP for read-only operations, ftp/sftp/webdav or others for write operations). This allows you to host a repository on almost any internet service provider without dedicated support.
== Work on partial checkout ==
Whether a user can checkout only a subdirectory of a project and work on it.
== Windows support ==
Whether the Microsoft Windows platform has good native support. Cygwin support is not sufficient.
== Fast Local Performance ==
Whether local operations (commit, "which files have I changed?", diff, switch to different revision, merge) are fast.
== Fast Network Performance ==
Whether network operations (pull, push, clone) are fast.
= Details of particular VCSes =
In some cases, it is hard to answer 'yes' or 'no' to a particular question.
== Bazaar-NG ==
The current implementation of Bazaar-NG has very poor network performance for propagating changes. This is expected to become about 30 times faster in the near future.
== Mercurial ==
Mercurial supports file renames, but does not yet propagate content changes across renames. It doesn't (yet) track directory renames.
== Git ==
Git does not store renames. However, features like merge can make pretty good guesses about renames.
Git does not work on native Windows, but does work (slowly) on Cygwin.
== Subversion ==
Subversion does not support decentralized operation, but svk is a decentralized VCS implemented on top of svn.
|See also [[http://en.wikipedia.org/wiki/Comparison_of_revision_control_software|Comparison of Revision Control Software]] on wikipedia for another relatively complete comparison.|