Bazaar

Bazaar

 




Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

Differences between revisions 56 and 99 (spanning 43 versions)
Revision 56 as of 2006-05-23 08:28:26
Size: 6927
Editor: JoelRosdahl
Comment: Corrected some Monotone features
Revision 99 as of 2007-02-08 08:55:28
Size: 324
Editor: MartinPool
Comment:
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 ||<#88ff88>Yes ||<#88ff88>Yes||<#ff8888>No ||<#ff8888>No ||<#88ff88>Yes ||<#88ff88>Yes||<#88ff88>Yes||<#88ff88>Yes||
||Disconnected Ops ||<#88ff88>Yes ||<#88ff88>Yes||<#ff8888>No ||<#ffff88>Limited||<#88ff88>Yes ||<#88ff88>Yes||<#88ff88>Yes||<#88ff88>Yes||
||Simple Namespace ||<#88ff88>Yes ||<#ff8888>No ||<#ff8888>No ||<#88ff88>Yes ||<#ff8888>No ||<#88ff88>Yes||<#ff8888>No ||<#88ff88>Yes||
||Supports Renames ||<#88ff88>Yes ||<#88ff88>Yes||<#ff8888>No ||<#88ff88>Yes ||<#ffff88>Somewhat||<#88ff88>Yes||<#88ff88>Yes||<#88ff88>Yes||
||Needs Repository ||<#88ff88>No ||<#88ff88>Yes||<#ff8888>Yes ||<#ff8888>Yes ||<#88ff88>No ||<#88ff88>No ||<#ff8888>Yes ||<#dddddd>? ||
||Supports Repository ||<#88ff88>Yes ||<#88ff88>Yes||<#ff8888>Yes ||<#88ff88>Yes ||<#ff8888>No ||<#88ff88>Yes||<#88ff88>Yes ||<#dddddd>? ||
||Checkouts ||<#88ff88>Yes ||<#ff8888>No ||<#88ff88>Yes ||<#88ff88>Yes ||<#dddddd>? ||<#ff8888>No ||<#88ff88>Yes ||<#ff8888>No ||
||Atomic Commit ||<#88ff88>Yes ||<#88ff88>Yes||<#ff8888>No ||<#88ff88>Yes ||<#dddddd>? ||<#88ff88>Yes||<#88ff88>Yes||<#dddddd>? ||
||Cheap branching Anywhere ||<#88ff88>Yes ||<#88ff88>Yes||<#ff8888>No ||<#88ff88>Yes ||<#ff8888>No ||<#88ff88>Yes||<#ff8888>No ||<#ff8888>No ||
||[:Merge:Smart Merge] ||<#88ff88>Yes ||<#88ff88>Yes||<#ff8888>No ||<#ff8888>No ||<#88ff88>Yes ||<#88ff88>Yes||<#88ff88>Yes||<#88ff88>Yes||
||[:CherryPick:Cherrypicks] ||<#88ff88>Yes ||<#88ff88>Yes||<#ff8888>Yes ||<#88ff88>Yes ||<#dddddd>? ||<#88ff88>Yes||<#88ff88>Yes||<#88ff88>Yes||
||[:BzrPlugins:Plugins] ||<#88ff88>Yes ||<#ff8888>No ||<#ff8888>No ||<#dddddd>? ||<#dddddd>? ||<#88ff88>Yes||<#dddddd>? ||<#dddddd>? ||
||Has Special Server ||<#ff8888>No ||<#ff8888>No ||<#88ff88>Yes ||<#88ff88>Yes ||<#dddddd>? ||<#88ff88>Yes||<#88ff88>Yes ||<#dddddd>? ||
||Req. Dedicated Server ||<#88ff88>No ||<#88ff88>No ||<#ff8888>Remote||<#ff8888>Remote ||<#88ff88>No ||<#88ff88>No ||<#88ff88>No ||<#88ff88>No ||
||Good Windows support ||<#88ff88>Yes ||<#ff8888>No ||<#88ff88>Yes ||<#88ff88>Yes ||<#ff8888>No ||<#88ff88>Yes||<#88ff88>Yes ||<#dddddd>? ||
||Fast Local Performance ||<#88ff88>Yes ||<#ff8888>No ||<#88ff88>Yes ||<#88ff88>Yes ||<#88ff88>Yes ||<#88ff88>Yes||<#88ff88>Yes||<#ff8888>No ||
||Fast Network Performance ||<#ff8888>Soon||<#ff8888>No ||<#88ff88>Yes ||<#88ff88>Yes ||<#88ff88>Yes ||<#88ff88>Yes||<#88ff88>Yes||<#ff8888>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 / Supports Repository ==
Some revision control systems require that branches be aggregated into [:Repository:repositories]. Bzr can use repositories if you like, for greater space efficiency, convenient publishing and backups.

== 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).

== Cheap Branching Anywhere ==
Some systems only support cheap branching on filesystems that support hard links, but bzr can do cheap branching on any filesystem, and even on FTP servers.

== 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. Subversion can also do some things (like comparisons of the working directory against the checked out version) without a connection to the server, but for anything that actually affects the repository (like a checkin), Subversion needs to be able to talk to the server.
See also [http://en.wikipedia.org/wiki/Comparison_of_revision_control_software Comparison of Revision Control Software] on wikipedia for another relatively complete comparison.

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.

See also [http://en.wikipedia.org/wiki/Comparison_of_revision_control_software Comparison of Revision Control Software] on wikipedia for another relatively complete comparison.