[Buildbot-devel] I've added Bazaar (bzr) support, but I have questions

Brian Warner warner-buildbot at lothar.com
Tue Jan 23 08:16:07 UTC 2007

Hey folks.. I just merged a patch that I developed a few weeks ago to add
Bazaar (bzr) support. There are a few issues remaining, and I was hoping that
folks who know bzr better than I do could make some suggestions:

The main issue is what to call it. For those who haven't used it,
/usr/bin/bzr is the command-line tool used by a spiffy distributed version
control system that is sometimes known as "bazaar-ng", and sometimes as just
"bazaar", which is described at it's home page at http://bazaar-vcs.org/ . It
is a rough descendant of an earlier version control system named "Arch", for
which there were several competing command-line tools: /usr/bin/larch
(written in shell), /usr/bin/tla, and /usr/bin/baz . tla was sometimes
described as just "Arch", while baz was sometimes described as just "Bazaar".

Hence the confusion. When I added support for Arch, the two popular clients
(tla and baz) were different enough that they needed different classes in
buildbot.steps.source, and hence they needed separate names, and rather than
being prescient and naming them Arch_tla and Arch_baz, I went ahead and named
them Arch and Bazaar.

So we've got the source.Arch class (for tla), the source.Bazaar class (for
baz), and the new source.Bzr class (for bazaar). I don't know how popular
tla/baz are anymore.. it's a pity we can't use source.Bazaar for the thing
that everyone means when they say "Bazaar" these days. But maybe we could,
perhaps there's nobody still using baz and we can reclaim the name. If we did
that, it would probably become source.Arch, source.Baz, and source.Bazaar . I
don't like making incompatible changes like that casually, hence the
question: what do actual tla/baz/bzr users think?

The second question is a possible bug in bzr. I found two candidates for
determining the revision of a working tree: the simple quick one is to run
'bzr revno', the higher-effort one is to run 'bzr version-info' and grep for
the 'revno' line inside. The trouble is, they don't always give the same
results (at least when doing a 'bzr checkout --lightweight'). Does anyone
know if they're supposed to always give the same value?

The third question: what's the state-of-the-art for bzr commit hooks? I
wasn't able to find any immediately obvious place to add a bzr_buildbot.py
script. At the moment, buildbot-trunk has support for doing bzr checkouts but
there's no way to get Changes from a bzr tree into the buildmaster. Any

Please give it a whirl and let me know if you run into any problems. The
class name may change before the next relase, but apart from that I think the
code is pretty useable (it even has unit tests).


More information about the devel mailing list