Devs,

Now that we're on Git and have a system for managing tags that isn't
nutty, its time that we should revisit our tagging protocol for
releases.

First, a note about the Git hosting. One of the ASF requests was that
I write a thing that prevented the ability of rewriting history on
master. When I implemented this I made the branch pattern configurable
to multiple branches. Currently this protection applies to master,
trunk, and any branch or tag prefixed with "rel/". The idea was that
we'd be able to move release branches like 1.1.x, 1.2.x etc to
rel/1.1.x and rel/1.2.x so that we don't accidentally break them. The
same for tags. Once we tag something as rel/1.1.1 the rewrite checks
will prevent someone from accidentally modifying it.

So given that, and the fact that Git lets us alias specific tags
exactly, I thought I'd propose a couple slight tweaks to the release
procedure.

1. When tagging release candidates, the tag would be of the pattern:

     tags/rc/X.Y.Z-rcN

2. When a release formally passes a vote, we would copy the tag to:

     tags/rel/X.Y.Z

3. I think we discussed this before, but we should also place the rc
artefacts into a directory named as such (IIRC, we decided that the
name shouldn't change). Ie, 1.1.1 would be stored at:
http://people.apache.org/~rnewson/dist/1.1.1/rc1/apache-couchdb-1.1.1.tar.gz

4. Making new release branches we should name them:

    branches/rel/X.Y.x

5. For continuity, I'd also propose copying all of our older tags and
branches to the new pattern (while keeping the current versions around
for an extended period of time).

Thoughts?

Reply via email to