[MERGE] Add Bazaar Zen section to the User Guide

Ian Clatworthy ian.clatworthy at internode.on.net
Thu May 8 21:59:34 BST 2008


John Arbash Meinel wrote:
> Robert Collins wrote:

> | I'm sure that *I* don't want people to work in a particular way.
> | Bazaar's workflow features have come about by watching how people use
> | the tool and what behaviour seems to work well in different situations.
> |
> 
> I think what Ian has posted here is a relatively good exposition of how the
> Bazaar project views the revision graph. And it *does* encourage specific
> workflows. Because we view merge commits separately from mainline
> commits, we
> encourage people to think in those terms. (contrast that with mercurial
> and git,
> where all commits are "flattened" to a plain stream, which encourages a
> bit more
> history cleanup, because everyone sees all the commits in a row, etc.)

Thanks. As I mentioned on IRC, I really found this difficult to write given:

1. It arguably needs to be early in the manual so users
   aren't surprised/confused about the fact that revision numbers
   reflect the per branch views - and that's a feature, not a bug.

2. No bazaar commands have actually be introduced yet.

> | You also claim that bzr has internal differences vs git, darcs et al.
> | bzr and git are remarkably similar in regards to merge graph facilities;
> | only darcs is truely different.
> 
> Here, I agree with Robert. But I think it is mostly in the way Ian
> presented it.
> He claimed that the internals are different, but I would say it is
> probably our
> presentation layer. If you layered it into:
> 
> ~  Guts
> ~  UI Commands
> ~  Presentation
> 
> We are fairly similar in Guts and commandline to many systems. Probably
> similar
> enough that the differences are bothersome when switching between systems
> because they are otherwise so similar.
> The raw internal is just another DAG. It is our presentation of that DAG
> which
> differs from git and hg.

Fair enough. I think the differences are deeper than just presentation -
e.g. git ships around repos and branches are simply aliases of
revision-ids - but I'll s/internals/presentation/ in recognition of the
primary point I'm trying to get across.

> |
> | Secondly, your description of why to use merge vs push confused me; it
> | confused me because these things are orthogonal; if one uses solely push
> | & pull & commit it is not possible to resolve concurrent activity.
> | Pushing from feature branches does not prevent concurrency, and only
> | merge+commit can resolve concurrent activity across branches.
> 
> I agree there needs to be at least 1 merge, or possibly a rebase to make
> the
> "push" style work.

There does. I did realise that BTW. :-) My example shows the result of
sending a list of patches to an upstream/gatekeeper. I was implying
rebase+push without wanting to explain rebase. I'm really trying hard to
keep it *as simple as possible* here, so I'll try again in this bit.

> | I think the goal of explaining the core activities of working with
> | concurrent development is good; I think this document creates confusion
> | (or at least, it left me confused; and if I get confused by it, with my
> | detail understanding of the space, I'm really worried other folk will be
> | left utterly stumped).
> 
> I actually felt it was rather clear and straightforward. I would guess that
> knowing the details is what confused things.

Yes, too much knowledge can be quite annoying when reading documents
written for new users. :-)

Ian C.



More information about the bazaar mailing list