#1644 closed task (fixed)

move to git

Reported by: warner Owned by: warner
Priority: major Milestone: soon (release n/a)
Component: dev-infrastructure Version: n/a
Keywords: git darcs trac buildbot Cc: francois@…
Launchpad Bug:

Description (last modified by warner)

We've decided to move to git. As #1226 points out, keeping Tahoe in darcs is an unfortunate barrier to entry. This ticket tracks the process.

We'll use the repo that I've been maintaining through a creaky manually-run bidirectional darcs-to-git bridge, and publish on github. I started publishing it under my personal account (and thus it has a few dozen forks), but I created a new "Organization" account and we should publicize that one as the official repo (on github, at least):

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

The bridge only handles linear history, so until we drop darcs completely, I'll be rebasing and linearizing everything that touches master. The official repo will only contain a "master" branch, for now: later we'll figure out a release process, and add the 1.8.3 branch back in (which is currently unrepresented in git).

Steps:

  • Set up "tahoe-lafs" Github "Organization" account
  • Set up post-commit webhook to update tahoe-lafs.org:/home/source/git/tahoe-lafs.git upon changes
  • Add "git" repo/branch to Trac
    • this is currently stuck at some old revision: I'm not sure why, maybe some bug in the trac-git plugin
    • turns out the /home/source/webhook daemon needed --umask 002, otherwise when it did a 'git fetch', the new object files were unreadable by the trac daemon
  • Set up git-based buildmaster
  • Migrate all slaves to the git-based buildmaster
    • create entries for all slaves
    • port all Builders (add buildbot "categories" to mark Builders as "supported", "performance", "packaging", etc, to simplify web display)
    • port the index.html page
    • shut down old buildmaster, change slaveport of new buildmaster to match the old one: boom, all slaves now connect to the new buildmaster
    • get Git installed on all buildslaves that lack it
  • update the following wiki pages to instruct people to use git instead of darcs: wiki:NewbieDeveloperSetup, wiki:Dev, wiki:AdvancedInstall (potentially better to remove any instructions on that page about revision control rather than to update the instructions from darcs to git)
  • Stop updating darcs repo, freeze it
  • Build tool to modify Trac DB [DARCS-REVID] comments to git-based [REVID/git]
  • Run revid-mapping tool
  • Switch Trac "default branch" to git
  • Replace DB comments with [REVID/git] to just [REVID]
  • Remove darcs branch from Trac

Change History (14)

comment:1 Changed at 2011-12-21T21:35:53Z by warner

  • Description modified (diff)

got trac+git fixed, now we see new changes

comment:2 Changed at 2011-12-22T08:09:25Z by francois

  • Cc francois@… added

comment:3 Changed at 2012-02-16T23:18:09Z by davidsarah

  • Keywords git darcs trac buildbot added

comment:4 Changed at 2012-03-26T17:08:38Z by zooko

  • Description modified (diff)

comment:5 Changed at 2012-03-26T17:09:08Z by zooko

This will probably fix #1519.

comment:6 Changed at 2012-09-17T23:46:17Z by zooko

Let's see... Are we waiting for David-Sarah to finish up some darcs branches before we all agree not to push new changes to darcs? Once we've so agreed, I could make the darcs repos read-only in the filesystem.

comment:7 Changed at 2012-09-17T23:59:17Z by zooko

A next-step here is to write a tool that trawls through the database and replaces [REVNUMBER] with the appropriate git commit id for that darcs commit number, and likewise replaces source:foo@REVNUMBER and (?) I guess also replaces https://tahoe-lafs.org/trac/tahoe-lafs/browser/src/allmydata/web/directory.py?rev=5d404db898e1e6dc#L306 with https://tahoe-lafs.org/trac/tahoe-lafs/browser/src/allmydata/web/directory.py?rev=5d404db898e1e6dc334c3d125ea12a34ea58b13f#L306. Also there may be some darcs patch hash tags, like https://tahoe-lafs.org/trac/tahoe-lafs/browser/src/allmydata/web/directory.py?rev=5d404db898e1e6dc#L306 which should likewise be rewritten.

Actually, since Brian said he wasn't going to do this anytime soon, and I'm not feeling particularly motivated to do it either, maybe a nice interim measure is to just start using src:git/foo instead of src:foo in our *new* comments, and in general to go manually converting such things as are mutable (e.g. wiki pages) to point to https://tahoe-lafs.org/trac/tahoe-lafs/browser/git instead of to https://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk.

comment:8 follow-up: Changed at 2012-09-18T01:26:25Z by davidsarah

Why not switch the default trac branch to "git" now? That wouldn't break anything, would it?

comment:9 in reply to: ↑ 8 Changed at 2012-09-18T01:28:13Z by davidsarah

Replying to davidsarah:

Why not switch the default trac branch to "git" now? That wouldn't break anything, would it?

Oh, of course it would -- it would break all the revision-specific links.

comment:10 Changed at 2012-10-26T01:25:41Z by davidsarah

  • Description modified (diff)

comment:11 Changed at 2012-10-28T00:45:09Z by amontero

The following description can be found on github repos:

The Tahoe-LAFS decentralized secure filesystem. https://github.com/tahoe-lafs/tahoe-lafs is the master. (note that this is a mirror of the darcs repo, updated manually whenever I remember to run the script)

Is the darcs manual sync still active?

comment:12 Changed at 2012-10-28T02:07:06Z by warner

No it's not.. we retired that a week or two ago. Thanks for the catch, I'll update the github description.

comment:13 Changed at 2014-07-08T17:15:08Z by zooko

  • Description modified (diff)
  • Owner changed from somebody to warner

Brian: can we mark off any more of the steps from the original description as "done" yet? Or should we instead mark them as "won't do"?

comment:14 Changed at 2014-07-09T00:04:58Z by warner

  • Description modified (diff)
  • Resolution set to fixed
  • Status changed from new to closed

Yeah, actually, all of them are done now. Closing this out.

Note: See TracTickets for help on using tickets.