[OT] Comparing VCS tools

Ben Finney ben+python at benfinney.id.au
Tue Apr 26 22:45:22 EDT 2011


Tim Chase <python.list at tim.thechases.com> writes:

> Bazaar (bzr)
> ============
> launchpad.net popular for hosting
> Pros:
> - some Ubuntu interactions (such as launchpad) easier
> - a rigorous focus on correctness
> - written in Python (with a small optional bit of C)
> - easy-to-use interface (CVS-ish)
> - good cross-platform support

- Launchpad is free software (so anyone could run their own instance to
  host Bazaar repositories).

- Merges preserve all revision data, but history displays don't show
  merged revisions by default. (This obviates most of the need for
  history-altering commands in other VCSen to “tidy up” the revision
  data: it's tidy already by default.)

- Very smooth interaction with “foreign” VCS repositories, especially
  Subversion.

- Supports a wide range of workflows, without forcing peers to the same
  workflow.

  - Especially: Supports “centralised” (Subversion-style) VCS workflow
    without losing any of the distributed advantages.

- Treats files, and filename changes, as first-class citizens in the
  revision data. (Git and some others use fallible heuristics to figure
  those out after-the-fact instead of recording the data.)

> Cons:
> - was slow, though I understand they've worked on improving this

Right, that's not a count against Bazaar for at least the last several
versions (since 2009 at least). Bazaar is easily fast enough for
anything people use, say, Mercurial for.

Cons:

- Repository formats were changing frequently for a while, leaving a
  legacy of confusion (fixed now, but the confusion is still a black
  mark).

- Limited developer base, because of Canonical's community-hostile
  “contribution agreement” requirements.

- Currently only one big public full-featured hosting of Bazaar
  repositories: Launchpad.net.

- The most advanced web UI to browse Bazaar repositories, “loggerhead”,
  is somewhat lacking compared to the ones at Git and Mercurial hosting
  sites.

> Mercurial (hg)
> ==============
> BitBucket is popular for hosting
> Pros:
> - speedy

This isn't a significant advantage for Mercurial against Git (which is
much faster) or Bazaar (which is easily as fast as Mercurial).

> - fairly compact repositories

Again, this isn't a significant advantage for Mercurial over either of
Git or Bazaar.

> - chosen by Python as the repository of choice

As I understand it, the decision was down to Bazaar or Mercurial, which
were each close enough in technical and workflow assessment that the
decision was made on personal preference. Fair enough, and it does give
another reason *now* to use Mercurial, but not due to any particular
advantage in Mercurial.

> Cons:
> - no biggies that I've found

- (Anecdotal) Merge algorithm sometimes fails catastrophically.

- Merged revisions aren't hidden, leading users to alter history.

> Protocols:
> - http
> - ssh


> Git (git)
> =========
> GitHub is popular for hosting

Unlike GitHub, Gitorious is a free-software Git hosting provider.

> Pros:
> - a *lot* of popular projects use it (Linux kernel)
> - fast
> - fairly compact repositories
> - good documentation (though somewhat scattered)

Hmm. Can't really overcome the rampant NIH syndrome: there is a lot that
shouldn't *need* so much documentation if the interface were better
designed from the start. I wouldn't count this as a pro for Git.

> Cons:
> - interface diverges from the "CVS standards"

- Terminology and command-line API gratuitously arcane (I'm reminded of
  GNU Arch, *shudder*).

- Merged revisions aren't hidden, leading users to alter history.

> So that said, I've become a Mercurial user because the interface was
> close to SVN which I used previously, and it was speedy on my older
> machines. If bzr has come up to comparable speed, I'd be game to probe
> it again.

I recommend doing so.

-- 
 \      “If I haven't seen as far as others, it is because giants were |
  `\                           standing on my shoulders.” —Hal Abelson |
_o__)                                                                  |
Ben Finney



More information about the Python-list mailing list