Bazaar

Bazaar

 




Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

Revision 26 as of 2006-02-20 18:24:44

Clear message

This chart is a rough draft

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.

Overview

RCS Name

Bazaar-NG

Arch

CVS

Subversion

Git

Hg

Monotone

Darcs

Decentralized

Yes

Yes

No

No[#3 (3)]

Yes

Yes

Yes

Yes

Simple/No Namespace

Yes

No

No

Yes

No

No

Yes

Supports Renames

Yes

Yes

No

Yes

Yes[#2 (2)]

No[#1 (1)]

Yes

Yes

Optional Repository

None

Req

Req

Req

Has standalone branches

Yes

No

No

No

Yes?

Yes

Yes

Has Checkouts

Yes

Yes

Yes

Yes

No

Has Revisions

Yes

Yes

No

Yes

Smart Merge

Yes

Yes

No

No

No?

Yes

Yes

Cherrypicks

Yes

Yes

Yes

Yes

Yes

Somewhat[#5 (5)]

Yes

Plugins

Yes

No

No

Can use standard fileserver

Yes

Yes

No

No

Somewhat

No

Yes

Can work over email

Planned

No

No

No

Yes

Work on partial checkout

No

No

Yes

Yes

No?

Windows support

Yes

Poor

Yes

Yes

No [#4 (4)]

Yes

Lock step development

Optional

Optional

Yes

Yes

no?

No?

No

No?

(note: it would be interesting to have a small benchmark too, like "time to run XXX diff/import/commit in the linux kernel",)

Details about each feature

Decentralized

Whether the tool is designed to allow branches of the same project to be in different remote repositories.

Simple/No Namespace

The namespace is the way a revision control system identifies a revision uniquely. It can be user-visible (GNU Arch), or tool internal (bzr, git, ...).

Optional Repository

?

What does "req" mean?

Supports Renames

Whether the tool supports file renaming and merging changes to a renamed file.

Has Checkouts

A [Checkout checkout] is a working tree with a relatively small amount of metadata.

Has Revisions

?

Has standalone branches

A StandaloneBranch is a directory containing both a working tree and the history.

Smart Merge

Whether the tool is able to know which revisions have to be merged (recording 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. See BzrPlugins for the case of bzr.

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.

Can work over email

Whether the tool can easily work over email. This is usefull for example for an occasional contribution to a project, without having to publish a branch. See SubmitByMail.

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 is well supported.

Lock step development

Whether users are forced to be up-to-date to be able to commit. This prevents divergent branches. This is by-nature the case for centralized RCS, and might optionaly be implemented in distributed RCS.

Footnotes

Anchor(1) 1. Support for renames in hg is being implemented. Unlike bzr, it uses rename history instead of unique file ID.

Anchor(2) 2. Git has a very particular management of renames. It does not track renames at commit time at all. However, it "guesses" them at merge time. Since it uses hashes, it can immediately see renames without modifications, and otherwise, it has to use a heuristic to find the file with the closest content. Linus claims that this is the best model, while other find it completely broken. See for example [http://www.mail-archive.com/git@vger.kernel.org/msg03711.html this post].

Anchor(3) 3. Subversion is surely not a decentralized revision control system (see for example [http://subversion.tigris.org/subversion-linus.html this page] if you're not convinced). However, [http://svk.elixus.org/ svk] is built on top of subversion and is a decentralized revision control system.

Anchor(4) 4. Can be made to work on cygwin, but with poor performance.