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?