Bazaar

Bazaar

 




Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

Differences between revisions 56 and 100 (spanning 44 versions)
Revision 56 as of 2006-05-23 08:28:26
Size: 6927
Editor: JoelRosdahl
Comment: Corrected some Monotone features
Revision 100 as of 2009-05-14 18:26:53
Size: 326
Editor: localhost
Comment: 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 ||<#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 Comparison of Revision Control Software on wikipedia for another relatively complete comparison.