[tahoe-dev] moving to Git!

Brian Warner warner at lothar.com
Wed Dec 21 09:06:39 UTC 2011


So, we[1] have decided to move Tahoe development to Git!

We're using the git repo that I've been maintaining through a creaky
manually-driven bidirectional darcs/git bridge. I've been running it for
a couple years now, so it seems stable enough to last a bit longer.
We'll be publishing this through our new Organization account on github:

 https://github.com/tahoe-lafs/tahoe-lafs

 (if you've forked a repo from warner/tahoe-lafs, feel free to keep
 using that, but the tahoe-lafs Organization will be the primary repo
 from now on).

In the long run, we'd prefer to have the canonical repo live on
tahoe-lafs.org (in particular have buildslaves pull from there), and
just use GitHub as a publishing mirror and collaboration tool, but we'll
have to see how things go. In particular, we'd like to stick with Trac
for bug-reporting and single patches, at least to start with, since it's
got more project-management features (and lets us retain more control
over the data) than GitHub's issue-tracker. Suggestions welcome!

== Bridge Restrictions ==

We'll be running with both darcs and git in parallel for a while, so for
the moment, there are a couple of restrictions on what we can commit:

 * The bridge only handles linear histories. I'll enforce this by
   rewriting and rebasing any changes that enter from the Git side
   before landing them on master. Patches coming from the Darcs side are
   applied in single-file anyways, so no new restrictions there.
 * I run the bridge manually (it's not safe enough to be run
   unsupervised), so there will be a human delay between the time
   something lands on the darcs side and the time it appears on the git
   side. I usually get to it within a day, but feel free to ping me on
   IRC when you push a commit to darcs.
 * Nobody else should commit to the official git repo right now. When we
   stop using darcs (and the bridge), we can fix the permissions so that
   all Tahoe committers will have write access. Send pull requests and
   I'll merge them appropriately.
 * Release branches will have to be managed specially. 1.8.3 does not
   yet exist in the git repo (I'll need to build it manually). If we do
   a near-term 1.9.1 release, we'll probably do it from trunk.

I landed changes the other week to make _version.py work from git: it
probably isn't enough to let 'python sdist' or 'bdist_egg' work yet, but
basic operations should succeed. It'll need a little more testing before
we can safely cut a release from the git side. Likewise, there might be
some test failures surrounding the self-determination of __version__.

== Trac ==

Getting Trac to pay attention to the Git tree is going to take a bit
longer. We've got it recognizing a new "git" repo on the "Browse Source"
page[2], but for some reason it's refusing to acknowledge any changes
from the last 7 weeks. There's a github post-commit webhook in place
that ought to update the .org-side tree, and trigger Trac into looking
for new changes, but something's still broken.

The general plan is to get this part working, then stop updating the
Darcs tree, then build a tool that modifies the Trac database to update
all the little [1234] revision-id comments to git SHA1 revids, then
remove the darcs repos from Trac's awareness. (we'll keep the #999
branch until that code lands, for sure). There are notes and a checklist
in #1644.

== Buildbot ==

We have a new buildmaster[3], which is feeding off the github
post-commit hook, and instructs buildslaves to update from github. We'll
be moving all the existing slaves to this buildmaster soon, and then
we'll find out which ones need to have Git installed (or their buildbot
code updated). We'll also update to a newer buildbot version (0.8.5) at
the same time, and start using "categories" to organize the waterfall
views a bit more easily.



Let me know how it looks and what y'all think. If you see any problems,
grab me on IRC, or add a note to bug #1644.

cheers,
 -Brian



[1]: and by "we", I mean I want Git, a bunch of other people have
     expressed various levels of support for the idea of moving to Git,
     and Zooko finally said "let's move to git as soon as possible", so
     I'm acting quick, before anyone changes their mind
[2]: https://tahoe-lafs.org/trac/tahoe-lafs/browser
[3]: temporarily at https://tahoe-lafs.org/buildbot-tahoe-lafs-git/
[#1644]: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1644


More information about the tahoe-dev mailing list