Some feedback on colo plugin

Neil Martinsen-Burrell nmb at wartburg.edu
Sun Feb 7 14:27:09 GMT 2010


On 2010-02-07 07:31 , Matthew D. Fuller wrote:
> On Sat, Feb 06, 2010 at 01:48:28PM -0600 I heard the voice of
> Neil Martinsen-Burrell, and lo! it spake thus:
>>
>> What situations would you expect people to want to manage entire
>> colocated workspaces in?
> 
> The most obvious use-case that floats around in my mind relates to
> projects with multiple active branches.  One can point at a very near
> example of bzr, having bzr.dev/2.0/2.1 branches, for instance.

So then that project would constitute a collection of three branches
that should remain together?  I can see where that makes sense for
Alexander's QBzr needs as well.  (In fact, the knock-on effect of Bazaar
gaining a stable release is that all of the plugins have to gain stable
releases.  Soon everyone will need fasces!)

So as a straw-man, one would like to be able to create a fasces that
contains bzr.dev/2.0/2.1:

$ bzr colo-fetch lp:bzr --and lp:bzr/2.0 --and lp:bzr/2.1 ./bzr-fasces

And then update all of the branches in the fasces

$ cd bzr-fasces
$ bzr colo-pull # to distinguish from pull which updates one branch

And be able to push all three of the branches at a time

$ bzr colo-push lp:~nmb/bzr/multi-bug-fixes # not just push

And for some version of the same setup on another machine, be able to
synchronize from that pushed version

$ bzr colo-pull lp:~nmb/bzr/multi-bug-fixes

How should merging from a fasces work?  It would seem to involve too
many working trees to fit into the current model of a colocated
workspace that has one tree that points to many branches.

How do hg and git deal with repositories with multiple branches?  When I
pull from a git repository, do I get all of the heads (=branches) or
just the master?  Do they have a way to push multiple heads as well?

>> I think that this needs deeper support in Bazaar similar to Jelmer's
>> proposed colocated branch collection format.
> 
> One of my contentions in Fasces (which may not be emphasized as much
> as it should be) is that, to really integrate colocation in bzr, a
> necessary fundamental primitive to refer to branches _by name_ is
> indispensible.  Fakery like switch et al currently have to refer by
> location while looking sorta like referring by name would lead to huge
> pain trying to extend to universality, and would never really work
> well enough.
> 
> Of course, you can't pull off that sort of change in a plugin   8-}

I agree very much with this characterization of the importance of
fasces.  My goal with this plugin was that all of the commands that
start with colo- should just take names of branches and that the colo:
specifier should otherwise allow names to be converted to URLs.  For
example, I'm uncomfortable overloading ``colo-branch
--from-branch=BRANCH`` to take both names AND URLs; this doesn't work
that well with switch and doesn't seem universalizable).

-Neil



More information about the bazaar mailing list