Trunk

Not logged in - Log In / Register

Revision 4 as of 2009-08-10 18:32:40

Clear message

This page describes the "master" branches for Launchpad development. Please ask for help immediately if you have any questions.

TODO: The relationships between these four branches are given in this internal wiki page, along with great diagrams: https://wiki.canonical.com/Launchpad/Experiments/DBDevel . I am transferring that information over right now. Also, I'll finish out bug #408069 when done. -kfogel

Where's trunk?

Launchpad has four master branches (this is unusual; most projects only have one). All four are owned by launchpad-pqm, the Patch Queue Manager. They are:

  1. devel Where most development takes place (except anything that involves changing the database schema; see below).

  2. db-devel Changes that modify the database schema get merged here first. Note: this is also the default stacking branch for other Launchpad branches.

  3. stable This is what we roll out to production servers when we do a release.

  4. db-stable ??? (see below)

Understanding the db / non-db distinction:

We want to be able to keep having edge updates during Week 3 and Week 4 (in the month-long development cycle). This means that our users are able to get more bug fixes during the whole of the cycle and we get a broader QA coverage.

Problems that can occur

Process under experiment

Merge requests that do any of the following should be sent via PQM to the db-devel branch:

All other developer merge requests for the launchpad tree should be addressed to the devel branch.

The current buildbot-poller.py script on the PQM box monitors buildbot to discover what revisions have passed the tests. When a new revision is "blessed" by buildbot, the script copies it over to stable. The poller script generates a merge request to PQM for merging the blessed revision with the db-devel branch. It is also responsible for checking a new buildbot build testing db-devel. The poller will copy revisions of db-devel that buildbot blesses to db-stable.

Staging releases and production releases should run code from db-stable. edge should continue to run code from stable.

When a production release is made, the db-stable code should be pushed to devel and stable before opening devel back up to commits (that is, turning off release-critical mode, or something even stricter). At the moment, we expect this push to be a manual job for LOSAs after a software maintenance.

Problems with the automated merge requests are sent to the Launchpad list (TODO: which list?). The PQM merge request is signed with a key associated with the Launchpad list email address; PQM will send any merge failure email to the Launchpad list.

When fixing a [testfix] or a merge error, reply to the email that was sent to the mailing list with the resolution of the issue.

When the merge of staging -> db-devel does not work automatically, it should be done manually and submitted. The tests do not need to be run (rationale: the bots don't run the tests when the do it automatically, and the failure messages can clutter up the ML really fast.)

What's that, you say?

By popular demand, let's try pictures.

This summary might be all you need.

codeflow.png

If you want more, now we'll break the process down a bit with a different diagramming approach.

So, here's what the old process looked like when you submitted to do the devel branch.

db-devel-old.png

Here's what happens when you submit to devel now.

db-devel-normal.png

Where are the expected potential problems in the process? Glad you asked!

db-devel-problems.png

All of this is really to support a new story: being able to submit directly to the db-devel branch.

db-devel-direct.png

How do I submit to db-devel?

cd ~/canonical/lp-branches
bzr branch lp:~launchpad-pqm/launchpad/db-devel mydbbranch
cd mydbbranch
./utilities/link-external-sourcecode ../trunk
make build
make schema

...hack until ready to submit...

bzr pqm-submit --submit-branch bzr+ssh://bazaar.launchpad.net/~launchpad-pqm/launchpad/db-devel -m '[r=so-and-so] improve frobnitz'

Instead of that last line, here's a nice variation from abentley:

Then the last line can be just this:

bzr dbsubmit -m '[r=so-and-so] improve frobnitz'

As another alternative, there is a version of ec2test that can be used to test against db-devel. This is in beta, so it is not on the main branch. Check out lp:~garyposter/lp-dev-utils/alt-lp-branch and try that version of ec2test. You should be able to use ec2test -b launchpad=db-devel to test against and submit to db-devel. Please report back successes and failures to Gary.

See also Launchpad/WorkingWithDBDevel.