Recommended use of Bazaar for single-committer multiple-machine projects?

Mary Gardiner mary at puzzling.org
Fri Dec 12 20:58:03 GMT 2008


On 2008-12-12, Matthew D. Fuller <fullermd at over-yonder.net> wrote:
> I consider --local to be far more of an escape hatch, and far less a
> daily tool.  It's an inherently schizophrenic thing to do; branches
> can be shared (as in a checkout) or independent; --local users the
> former to emulate the latter.  Certainly it has unnecessary bugs like
> you've mentioned, but even with them fixed, it's [IMAO] much better
> considered a special-case stopgap, than a regular-use device.

In the model Eugene suggested though, I still need to do either:
 1. never merge things into the master checkout unless I happen to be
    online (otherwise I am working with --local still)

 2. have a model where I have master checkout, branch of master checkout,
    feature branches of the main branch, merge back into the main branch,
    and when online merge from there into the master checkout and then check
    in

 3. give up on checkouts and start having a vigorous star structure, which I
    find mostly undesirable because my brief exposure to Arch taught me
    exactly how unwilling/unable I am to devote that much energy to writing
    my code in a way my version control tool finds most convienient

It seems that to Bazaar (and to be fair, this is hardly a non-issue with
other VCSs) I am really doing something not very usual: the design is
for a branch per feature. (Interesting to think about doing this for
writing: since writing does not have clear metrics such as "currently
passes unit tests". Also it's not very useful to have several little
branches with independent work on the same document: writing involves
far more moving stuff around randomly than coding. Possibly my thesis
should be a whole different project from the codebase, but until I can
pull all the history out of Bazaar rather than just the right file-ids,
I won't change that.)

As I work across three different machines (occasionally up to five), I
inevitably have to have (at least) a branch/checkout per machine and I'm
mixing things up by not cleanly isolating
I-work-on-this-feature-on-this-machine-only and am unlikely to stop
doing so. So it's difficult to work out how to do this well without
turning logging off from a given desktop into an epic journey of
pushing/commiting/oop-failed-bugger-merge-and-resolve-and-do-it-again in
several branches.

The solution of "well, push/merge/update/commit all the time then, when
you're online" is problematic for a couple of reasons:
 - there's no equivalent when turning on a machine I haven't used in a
   couple of days, I will just have to suck it up and update the
   branches
 - networks are slow, and Bazaar's use of them is slow too.

So my solution has tended to be: have a checkout per machine. Do
everything in the one checkout. Then although I have a messy-as-hell
revision history I only have to bash the one checkout on each machine
into shape, not each machine's copy of every branch of each feature in
progress.

-Mary




More information about the bazaar mailing list