Progress update on the tarmac-for-git effort

Zygmunt Krynicki zygmunt.krynicki at
Fri Jun 5 18:15:02 UTC 2015


As some of you know, I'm working on the git transition for all
checkbox-related projects. The last blocking element is tarmac, which
merges our approved bzr branches. Today I wrote a script that can
process merge requests on both bzr and git branches [1].

The script works against current production instance of
though I will be making important changes next week when multiple bug
fixes and new features are released and can be relied upon.

One URL parsing bug aside, (breaks when / are in branch names) it
generally works. I've used it for a few toy examples today. It is
terribly unoptimized (doesn't reuse repositories between runs) and it
doesn't add comments on anything yet but that all is coming. The big
question, one that we need to answer, is how to proceed with

There are two possible options:
 - patch tarmac to support git, perhaps breaking some things (see below)
   - or bump major version and drop support for python hooks
 - create a new project by iterating on this prototype

Unknown number of people and projects rely on tarmac today. For them
it would be very useful to have a drop-in replacement. Tarmac however
is heavily tied to bzr, both at the implementation of the actual
operations (it relies on python 2.7 api of bzrlib), command line (all
command line stuff is inheriting bzrlib classes), configuration and
hook design.

This has some undesirable properties (python2.7 and bzr are required,
even if all you use is git). In my quick, hasty opinion tarmac should
be scrapped as a code-base and recycled as a project with different

For most of our users, this would not be a direct problem as long as
existing configuration files keep working. The big problem is hook
support. Tarmac, like bzr it is based on, implements a particular hook
mechanism where the hook is a python routine which has internal access
to all the APIs of both launchpadlib and bzr. This is naturally
unportable to python3 and git for obvious reasons.

Given that I have no other data I will risk making statement that
nobody uses those hooks as they are fairly complex and in some ways
equate to having a local fork of tarmac itself as they have all the
access to the core (trivia: did you know bzr has identical hooks? did
you ever use bzr hooks?).

Still, for the time being, I plan to work on incorporating any changes
needed to support git in the current upstream tarmac codebase. I don't
have a solid plan _yet_. I plan on having a look at the code to see
what is possible. I may need to make some drastic changes, to
de-couple it from bzrlib and python 2, and allow it to run without bzr
installed. Next week I should have more details.

If you are interested in the transition to git and are currently using
something to merge your bzr branches please have a look at the
prototype code linked below.



More information about the Checkbox-devel mailing list