Comparison with Git, Mercurial or Darcs?

Daniel Carrera dcarrera at gmail.com
Wed Nov 4 02:55:27 GMT 2009


Hi Stephen,

> Most of the updated comparisons I'm aware of have to do with
> performance, not workflow.

Ok. I realize that that's important for big projects. My projects are
so small that any VCS will be fast enough.


> The big selling point for many users is that Bazaar has the best
> facilities for repo-agnostic operation.  You can use bzr as a front
> end to svn, git, and maybe hg repos with very little change from the
> native bzr interface.

That's interesting. I didn't know that.


> bzr also has a plethora of options for automating workflow.  You can
> operate in Darcs-style repo = branch = workspace, or you can operate
> in Subversion-style workspace checked out from branch contained in
> repo.  There is some capability for git-style "multiple named branches
> in one repo = workspace" (I forget the Bazaar jargon for this).  All
> of these are accomplished by choosing an appropriate configuration of
> repository layout (this is not hard or complex) and options in the
> bzrconfig files.  Then the usual primitives (commit, checkout, push,
> pull) do the right thing.

Ok. That's also very interesting. It sounds complex, but I don't have
to worry about it. I'm sure bzr would work fine in its default
configuration.


> Of course there is no Darcs-like patch theory.  I wonder if you'll
> actually notice that in practice, though.

I think the only time I'll notice is when I commit changes A, B, C and
then I decide i want to uncommit change A. I do this quite often, but
I think Bazaar's "shelve" feature might give some of what I want.


>  > I would also be interested to hear any personal perspectives as to why
>  > you use Bazaar.
>
> Because my upstream does. :-)

Heh.


> AFAICT Darcs' theory of patches *in practice* depends heavily on the
> fact that two changes touching different sets of files don't conflict,

I've never heard this view before. When I move patches around, they
often touch the same file. I never really think about which files are
touched.

> and on what patch(1) calls "applying with offset".  This is no
> different from what is available in bzr, git, or hg.  All of them have
> cherrypicking, rebasing, and patch reversion commands that work just
> about as well as Darcs does in my experience, and do it one heck of a
> lot faster.  Darcs may do better in some corner cases, but I doubt
> that it saves enough time to make up for Darcs' general slowness.

Can you tell me how I can uncommit a change that I committed a few
steps ago? Just take the simple use case: I commit change A, then B,
then C, and I want to uncommit A. I do this very often. It makes my
whole workflow a lot simpler. Can I do this with Bazaar?

For the work I do, whatever slowness Darcs might have is completely
undetectable. But I know that Darcs is not suitable for very large
repositories or very long histories. But I'm a solo developer, so I
don't have that problem.



> However, the Darcs UI is very poor at examining history.  Basically,
> Darcs does not (and cannot, with current metadata structures) provide
> a way to give an accurate historical view of the commit DAG (and AFAIK
> there's not even a standard way to show the patch dependency DAG).

I'll take your word for it. I've never needed to look at the commit DAG.


> If you have a very linear development process, OR a "quantum" development
> process (ie, like your web developer process you have a "cloud of
> virtual patches" at any one time, and after a bit of experience you
> decide which ones to make permanent and which to revert) that's very
> "broad" in the number of patches being worked on at one time, but you
> rarely if ever worry about history a few months back, the history DAG
> will not be missed.

Yeah.


> bzr shines at displaying history.  It is very good at showing you what
> you've accomplished in your current branch and relating that to other
> lines of development.

Ok.


>  > I can add patches A, then B, then C, and then remove patch A to
>  > make a change.  Bazaar's "shelve" feature is similarly very
>  > interesting. I just wish I had a way to upload stuff on the shelf
>  > to the test server other than using rsync.
>
> I guess you're looking for "looms" (sort of like quilt or Stacked Git
> on steroids) or "pipes" (sp?) (very like Mercurial queues).  These
> allow you to maintain several lines of development in a single
> workspace in a very structured way, all under revision control.
> Because they are under revision control, you can push to the test
> server, then checkout the pieces you're interested in testing.
>
> These are not yet standard features of bzr, unfortunately, and at
> least looms are somewhat underdocumented.  However, they are quite
> stable and their users are very pleased with them.

I've never heard of looms but I would be interested to learn more
about them. Maybe they would be an alternative for me. Do you know of
any page that explains that a loom is?

Thanks for the information.

Cheers,
Daniel.
-- 
No trees were killed in the generation of this message. A large number
of electrons were, however, severely inconvenienced.



More information about the bazaar mailing list