[MERGE] make 'push' default to parent branch

Scott Scriven bzr at toykeeper.net
Tue Jul 29 23:07:09 BST 2008


* Russel Winder <russel.winder at concertant.com> wrote:
> ... the average Bazaar user will know about 1% of what the 
> Bazaar developers do, and probably use less than 5% of the 
> functionality.

It helps when users can transfer their experience with other 
systems to bzr.  That makes people feel more confident because 
they understand what's happening, and they tend to like bzr more 
when it "just works" in the ways they have come to expect.

Bzr does a pretty good job with this (which is no easy task), but 
there are still a few details here and there which differ in 
unnecessary ways.

> I like the goal of Bazaar:  DVCS with a consistent and simple 
> model.  Contrast Git.

I'm not too fond of git, but this seems backward.  Git has a 
relatively simple model with complex implementation.

In git, you have a repository.  It has history, one or more 
heads, and optionally a working tree.  It also has a complex UI 
which exposes too many implementation details.

Bzr has standalone branches, shared repositories, unbound 
branches, bound branches, remote branches, stacked branches, 
lightweight checkouts, looms, and different rules for each 
regarding working trees, heads, history, etc...  and a handful of 
different storage back ends, many of which are incompatible with 
various features and each other.

It's not a bad thing; just an observation.  To put it in analogy 
form, if git were a knife, bzr would be a Swiss Army multitool.  
That's part of why I like it.  But for users who are still 
struggling with basic DVCS concepts, bzr may be a bit of a 
conceptual overload.

> > It also doesn't help that "checkout" means something 
> > different in bzr than in git, hg, and bitkeeper.
> 
> Or put another way, isn't it wrong of Mercurial, Git and 
> BitKeeper to use the term checkout in a way that is 
> inconsistent with CVS, Subversion and Bazaar?

I suppose I was a little vague.  The "bzr checkout" command does 
the same thing as git/hg, by default.  It also provides cvs-like 
behavior with "bzr checkout --lightweight SRC DEST".  So, it 
supports both camps.  But I wouldn't expect a git/hg user to read 
the docs for "checkout" when looking for a way to make "push" 
smarter.

For a git/hg user, the concept of a bound branch is a little odd.  
I can see how it would be nice for cvs/svn users, but I avoid it.  
To me, it's just like a regular branch except "update" and 
"commit" are broken.  It's conceptually simpler for me to commit 
and push separately, because it's more consistent with the rest 
of the DVCS world and it reduces the amount of context necessary 
to guess what each command will do.


-- Scott




More information about the bazaar mailing list