why is pipeline (and maybe colo) so localized?

Wichmann, Mats D mats.d.wichmann at intel.com
Tue Oct 11 23:47:22 UTC 2011


Had fun recently playing with pipelines, which fill a very real need
for what I'm doing right now.  Will start playing with colocated
branches, which I assume are somewhat similar, without the
ancestral relationship aspect (sorry if that's an oversimplification).
The problem I'm having with pipelines is they seem overly
localized.  For a number of years, I've been able to have a working
branch of something on my main home work box, and if necessary
copy it over to a different machine if I need to travel; sometimes that
involves an operating system shift even, from Linux to Windows -
not always, but occasionally I have no choice but to travel with the
horrid Windows notebook.  But with a branch set up with pipelines, that
doesn't work... if I copy it over, it's "not a branch".  Yes, there's an
aspect that's immediately visible, .bzr/branch/location is (needlessly?)
branded with an absolute path which is certainly going to be different
for a different OS, since Windoze home directories are not in the
same place as Linux ones.  But fixing that by hand doesn't make
the problem go away... these seems to be more, and it's hardcoded
somewhere because you can't locate other "branding" with a find/grep.
The current pipe stage is still described as "not a branch", which makes
the whole thing broken.

For example, using cygwin, I see:

bzr: ERROR: Not a branch:
"/cygdrive/c/Users/mdwichma/Work/tizen-api-docs/.bzr/branches/tech-review/"

That's after fiddling locations, and that's pointing to a very real place now,
where the branch lives, but still isn't a branch.

More importantly (I know /copying/ a branch elsewhere isn't really a
supported scenario, even if I've gotten away with it for years), it seems
hard to have a situation where there's a master branch which has pipelines,
and have a working branch that reflects that.  From the wiki page
(I assume this is Aaron's writing from data in the examples), the
"Maintaining a series of patches against software from tarballs" is
compelling, but if we use that model in the master, how do you create
a working branch of that, say to add a new upstream revision? bzr
branch branches only the "current".  And if you have it in a working area,
how do you push changes?   bzr push doesn't push the whole pipeline,
only the current stage.  bzr sync-pipeline doesn't like seeing a similar
structure already in place (File exists).

I'm guessing a little; I haven't played with colo yet, about to go do
some experiments with that.  But the mechanism in git works just
as you expect:  you branch ("clone") from the master, and you've
right off the bat got the ability to switch between branches in place.
We'll see about colo, but for pipelines, that's not the case, if you
branch from another branch, you just get the "current" pipe "stage",
you don't get the whole pipeline.  Honestly, that's NOT what I expect.

I've gotta be missing something major here.... can someone turn
on the light switch for me?


-- mats



More information about the bazaar mailing list