Understanding pull

Matthew D. Fuller fullermd at over-yonder.net
Sat Mar 24 08:40:12 GMT 2007


On Fri, Mar 23, 2007 at 10:06:17PM +1000 I heard the voice of
Ian Clatworthy, and lo! it spake thus:
> 
> So what recipes involve pull? Do developers use it commonly in
> day-to-day development? I can see its applicability when I want a
> pristine local mirror of a master repository in order to run/test
> against when reporting bugs, say. By even in that case, what is pull
> buying me that merge isn't?

Well, you can't maintain a pristine local mirror with merge (unless
you're doing it via `merge --pull`, of course, in which case you're
doing it via pull anyway ;).

Keeping a local mirror of the master repo (or, in fully-distributed
workflows, your peers' trees) is useful for comparison, and it's also
useful for merging.  Lot faster to merge from a local tree than a
remote one, after all.  You can pull your local copy incrementally
more often, then already have everything waiting locally when you want
to merge.  It's right there handy to do all sorts of history poking on
(logs, diffs, etc), as well as referencing the head.

Comparison isn't the only reason to use a pristine local mirror of
something, either.  I have a pristine local mirror of bzr.dev updated
every couple of days or so via pull, and I don't do bzr development;
my local bzr.dev is my working 'bzr' for all the stuff I use bzr
for[0].  Not everything you want an up-to-date mirror of, do you
necessarily want in order to hack upon.


> But with that power comes the need for multiple recipes for
> beginners where previously just one 'sufficed' most of the time. The
> barrier to entry is low IMHO except in this area: CVS just has
> 'update' while bazaar has update/merge/pull to choose from.

Well, true.  But then, if you're going to limit bzr use to the cases
where CVS works, 'update' is all you need.  So at least we're
comparable in comparable cases    8-}



[0] And it's hardly the only thing I treat that way.  My workstation
    is running FreeBSD -CURRENT, which is the current development
    head.  I build it from source checked out via CVS from my local
    CVSup-maintained mirror of the CVS repo.  My window manager is
    ctwm, which is developed in (and I mirror via) monotone, and I'm
    running the current head there merged with some local changes.
    What's life if you're not a bit on the edge, eh?   ;)


-- 
Matthew Fuller     (MF4839)   |  fullermd at over-yonder.net
Systems/Network Administrator |  http://www.over-yonder.net/~fullermd/
           On the Internet, nobody can hear you scream.



More information about the bazaar mailing list