On Mon, Apr 13, 2009 at 2:09 AM, Michael B. Trausch <mike@trausch.us> wrote:
On Sun, 12 Apr 2009 15:23:02 -0500
King InuYasha <ngompa13@gmail.com> wrote:

> Aside from Launchpad, not many people actually like using Bazaar
> because it has the worst performance of the three by far.

The performance argument is a quite old one.  I certainly wouldn't say
that current bzr is as fast as current git, but I can't say that I've
ever run into any barriers performance-wise with it either.  Working
with the MySQL source tree is fairly easy and not at all slow, at least
on my system.


I tried out bzr just last night when I was downloading source code from launchpad and I see that you are right, it isn't that bad now. It's still slower than both Mercurial and Git, but it isn't horribly slow anymore.

 
> So far, people have recommended like so:
>
> Git - need to be extremely tech savvy, willing to work mostly if not
> only in POSIX-based systems, worst documentation of the three

It's documentation isn't bad.  There are man pages for every
sub-command of git that I've ever had need to use, though there are
many sub-commands that I have never even looked at (haven't had the
need).  I've only ever used it to prepare patches for projects that use
it, though, and its branching model is a bit inflexible for at least
the workflows that I use without wasting tons of disk space.

Man pages, while easy to access and are generally good for finding out what commands do what, are not a good example of good documentation. In most cases, man pages do not provide examples or rationales that prove one way or another. To substitute man pages for good documentation is a poor choice for most people.
 

> Mercurial - more complete docs, so easier to learn, cross-platform,
> has good performance with mix of C and Python

At least when I had looked at it, the documentation was pretty
confusing.  Admittedly, though, that was a long time ago when I was
comparing bzr, git, hg, and mtn to determine what I wanted to switch to
from svn.

I will admit that awhile ago, Mercurial's docs were confusing, but they seem to have cleaned up their act since then. On the main page you can find links to a full fledged book, quick start and reference guides in PDF and HTML form, and pages of info on migrating from one VCS to another.
 
> Bazaar - extremely cross platform, very slow compared to Mercurial
> and Git, sparsely documented, or out of date documentation, slightly
> strange in syntax, recommended for very small projects where
> performance won't matter too much.

At least since I've used it, the docs have always been more than
sufficient.  More importantly, I've only ever had to reference the
documentation once or twice---the feel of bzr is pretty intuitive
coming from Subversion, and I've never had a problem with performance.
I frequently use it against Subversion servers, as there are a great
many of those in the areas I work with.  Using it with MySQL, Mono, and
MonoDevelop, I've not had any complaints on performance, either.

A quick look at the Bazaar website shows that they have added some more docs and reorganized the ones they did have before, so it is at least on par with Mercurial. Frankly, I was surprised it was as bad as it used to be, considering Canonical uses Bazaar for Launchpad, and Canonical makes it its mission to make "open source for human beings." I believe one of the aims of Bazaar was to make it easy for people coming from subversion to use, so they tried to adapt SVN's command style for Bazaar. I don't really have a problem with that, but SVN is slightly strange to me, and CVS is just horrible; so I still agree with the advice I was given on that point.
 

> That was the advice I got when I was figuring out a DVCS to use for
> the Enano CMS Project. Based on that, it was rather easy to throw out
> Git and Bazaar.

It would be.  I can say that when I checked out the four I listed, it
was a pretty close decision between git and bzr.  Bazaar wound up
winning out because my clients used Subversion (many of them have
migrated to Bazaar internally for various reasons) and working with the
Subversion workflow, as well as other less centralized workflows, was
quite easy, and the branching model was rather enjoyable, IMHO.  Had
Bazaar not existed at the time, I would've chosen git, more likely than
not.  It is more difficult to work with, IMHO, but it was still the
only other option that stood out as viable to me.

I wouldn't be too unhappy with Bazaar, if things have truly improved since I tried them out, but I still think Mercurial is a better choice. But, your rationale is sound, and based on your needs, Bazaar was probably the best choice. 
 

A note; I'd checked all of these projects out in mid-2006 or so.  A
good lot has changed in both bzr and git in the last 3 years, so I'd
seriously try them all before making a decision.  The only one that I
know of that I would _still_ stay away from is mtn, but only because
the cost of cloning is completely terrible and the CL interface is
harder (at least for me) to grasp than git's.

       --- Mike

Two things:

1) Bazaar-NG (the current Bzr) was not announced until 2007, and did not have a release until Dec. 14, 2007. Still, Bazaar did exist in 2005 and 2006, and it was shortened to Baz I believe. And, Bazaar had to be good enough for the GNU Project to bring it under its umbrella, so I'm not discounting it totally.

2) Git is still a pain to deal with. I don't like using Git because of its strange and redundant commands, it just doesn't make sense to me. Plus, ReactOS is a Win32 project, and no matter how much people would like it to be otherwise, it means Git cannot be a primary VCS for ReactOS until they come out with a fully native client with performance similar to the UNIX one, without going through a POSIX layer to mess stuff up. Nobody wants to install a full blown POSIX system on top of Windows unless they absolutely have to. 

In conclusion, I believe the only suitable DVCSes would be either Bazaar or Mercurial. But I would much rather see Mercurial than Bazaar :)