[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

AltStyle によって変換されたページ (->オリジナル) /