Comparison with Git, Mercurial or Darcs?

Ben Finney ben+bazaar at benfinney.id.au
Wed Nov 4 01:49:57 GMT 2009


Daniel Carrera <dcarrera at gmail.com> writes:

> I'm trying to understand what features make Bazaar different from
> other distributed VCS options. Can anyone point me to a reasonably
> updated comparison of Bazaar against other distributed VCS's?

It so happens one is in the works; it will likely be informative now
<URL:http://doc.bazaar-vcs.org/migration/en/why-switch-to-bazaar.html>.
Please note that it's deliberately *not* given a misleadingly objective
title :-)

> I am most interested in a comparison against Darcs, but not many
> people use Darcs, so I think I'll have to make do with a comparison
> against Mercurial or Git.

You might be interested in a discussion earlier this year, where a
Bazaar user tried to figure out what was going on in Darcs user's heads.
(Search for “Why Darcs users prefer Darcs over Bazaar”.)

> I would also be interested to hear any personal perspectives as to why
> you use Bazaar.

I have recently been using Darcs, and many things about Bazaar are much
better in my experience:

* It respects the recorded history of changes: When I make a change and
  commit it, later changes don't threaten to alter or remove my change
  from the ancestry. Changing history is possible, but is exceptional;
  nothing like as common as ‘darcs amend’ or ‘darcs obliterate’ etc.

  On the other hand, “oops” moments are easy to undo (‘bzr uncommit’).

* It has a simple way to put some changes aside (‘bzr shelve’) while
  committing the rest, and it's easy to bring uncommitted changes from
  one branch to another, if while working on the change there I decide
  they make more sense here (‘bzr merge --uncommitted $OTHERBRANCH/’).

* Bundling a set of changes together, or publishing a branch, is a
  meaningful operation for the recipient: the aggregate effect of a set
  of changes can, if desired, be examined just as easily as it were a
  single change, rather than defaulting to see each individual change.

  (It is the lack of this feature, IME, that leads Darcs users to use
  ‘darcs amend’ so often, losing the existing detail and history of each
  individual change.)

* Bazaar presents the ancestry of changes as UI: the natural way to talk
  about changes is by their revision number in the ancestry, and a range
  of revisions as they occurred in the branch (all commands talking
  about revisions allow the same range-of-revisions specifier).

  On the other hand, I can instead talk about a single change as a unit
  if I choose (with the ‘--change REVNO’ option).

* Shared repositories are implemented well (and soon to be the default
  in later Bazaar versions), and many Bazaar operations make it easy to
  manage a collection of related branches in a repository; but none of
  it is required.

* It allows for many different styles of workflow, smoothly and
  compatibly and decided when necessary, not locked-in up front.

* Especially, it allows for a centralised workflow when desired (‘bzr
  checkout’ or ‘bzr bind’) without administrative overhead, and without
  harming distributed operation.

* Rename is a first-class operation, tracked like any other change and
  maintaining consistent history of the file. This is a significant
  lessening of tedium and worry, allowing for how filesystem entries
  change over the course of working on a project.

* Directories — even empty ones — are first-class citizens of the
  inventory, tracked like any other entry. Also lowers tedium, and
  another example of Bazaar allowing for how people actually work with
  files in a project.

* The interface is far smoother and more consistent: it uses readline
  for command-line input, it handles Unicode properly, common options
  are sensible between commands, interfaces to external tools are done
  well, etc.

* It integrates well with workflow tools. Loggerhead is a good web
  interface to branches, Emacs VC mode supports Bazaar branches, Bazaar
  can use just about any sensible diff/merge tool, and I hear users of
  other workflow tools have similar happy stories.

I'm sure with more time I would think of other advantages. That should
give you a taste, anyway.

-- 
 \     “Oh, I realize it's a penny here and a penny there, but look at |
  `\      me: I've worked myself up from nothing to a state of extreme |
_o__)                                          poverty.” —Groucho Marx |
Ben Finney




More information about the bazaar mailing list