Short, task-based bzr doclets for real-world use cases.

Brian de Alwis bsd at cs.ubc.ca
Sat Jan 17 00:49:28 GMT 2009


On 15-Jan-2009, at 11:40 PM, Karl Fogel wrote:
>                ### (as an aside: why isn't this just "lp:bzr"?) ###


It works now!

	$ bzr branch lp:bzr
	Branched 3943 revision(s).
	$ cd bzr
	$ ./bzr --no-plugins version
	Bazaar (bzr) 1.12dev
	[...]

On 16-Jan-2009, at 3:56 AM, Paul Moore wrote:
> On 15-Jan-2009, at 11:40 PM, Karl Fogel wrote:
>> This turns out not to have been the best way to organize things :-).
>
> That in itself is an issue. In my view, the "natural" way for a new
> user to work (ie., the one he stumbles on without needing help from
> experts) should be correct (at least acceptable, if not optimal).

What makes something "natural" is highly dependent on your past, but  
that quibble aside, I claim that Karl's approach is fine for a simple  
one-off bug fix.  Having hacked and committed his change to his local  
branch from lp:bzr, he could have then done either of the following:

	$ bzr diff -r submit:		(takes about 5 seconds, wall time)
	$ bzr send				(takes about 12 seconds wall time)

This works as bzr uses the parent in the absence of an configured  
submit branch.  Now if Karl was planning on doing some more bzr  
hacking, then this might not have been the optimal way of using bzr as  
it generated more network traffic.  But it's correct, they are correct  
and acceptable.

I think we need to distinguish between (a) learning to use bzr and (b)  
learning to use bzr *well*.  Karl's tasklets would help in learning to  
use bzr well.

When I was looking into DVCS, I read a lot, and then started to play  
with Mercurial and bzr.  I too found that learning to use bzr well  
took time [1] -- but I don't think this was specific to bzr, but from  
wrapping my head around DVCSs.  Branches are expensive in centralized  
VCSs [2]; perhaps not in terms of making a branch, but certainly in  
managing merges to and from the branch.

[1] I gave up on Mercurial very quickly as I didn't like the CLI.  Bzr  
felt more "natural" :-)
[2] Subversion 1.5's merge info recording greatly simplifies merging.

On 16-Jan-2009, at 3:56 AM, Paul Moore wrote:
> (The hugely over-used example of needing a shared
> repo for performance, rather than a standalone branch, which is the
> "obvious" approach, is the canonical example here; your example above
> is another).

I think Paul makes a good point here -- we trivialize repositories by  
using them only for speed.  I think they're fantastic and should be  
treated by the documentation as first class objects.  I've been saved  
from having used a repository on three different occasions after  
mistakenly blowing away a branch too early (steps to recovery: 1. 'bzr  
heads --dead' and determine the right revid,  2.  'bzr init recovery- 
branch', and 3. 'bzr pull -r revid:... .' to recover the branch)


> While development is
> ongoing on improving speed, I get the impression that this isn't a use
> case that many people car about.

My one complaint about bzr is that it is slow.  It is improving though.

Brian.

-- 
"Amusement to an observing mind is study." - Benjamin Disraeli




More information about the bazaar mailing list