Branch
Release
Upload
Announce
|
frysk is making point release, cut from the Git
repository's HEAD, on the first Wednesday of each month.
This lets us deliver new features quickly, with a relatively low
overhead.
The relese branch is taken on the first Wednesday at 00:00
GMT, just in time for frysk's Wednesday meeting. We
then, during the meeting, conduct a brief review, check the NEWS file,
and make a go/no-go decision. It is then pushed out, perhaps with a
few minor fixes.
The process is also relatively simplistic. It assumes for
instance:
- there's never a pre-release tar-ball
that would require extra
pre-release version numbers such as 0.1.90... and then only
at the last moment set the real version (0.2).
- if there's ever a need for a re-spin, it just gets assigned a
patch-level number like 0.2.1 and use the original releases
branch
Cutting the Branch
Here's a suggested sequence:
- To make things easier, first lets set up a few standard shell
variables; you'll want to set version to something more
meaningful:
cd frysk (change dir to where you have a current frysk checked out)
version=0.2 ! ! ! change this
echo $version
date=`date -u +"%Y.%m.%d"`
echo date=$date 1>&2
shar1=`git-rev-list --before=$date -n1 HEAD`
echo shar1=$shar1 1>&2
branch=frysk/$version
echo $branch
- Next we create a branch (frysk release branches are named
frysk/<version>), and push that upstream:
echo branch=$branch shar1=$shar1
git branch $branch $shar1
git push origin $branch
- Finally, we update the version number of the branch, and push
that:
git checkout $branch
echo $version > frysk-common/version.in
cat frysk-common/version.in
git add frysk-common/version.in
git commit -m "Set version.in to $version"
git push origin $branch
The branch can then be checked out by everyone and build locally.
Of course the keen will have already checked out the branch point
using something like:
git checkout `git-rev-list --before='00:00 GMT' -n1 HEAD`
Making the Release
Here's a sequence for releasing frysk, we're assuming that $version
was set above:
- First lets find the shar1 of the branch head (so that it can be
refered to later), and the corresponding release tag:
echo branch=$branch
shar1=`git-rev-list -n1 $branch`
echo shar1=$shar1
release=`git show $shar1:frysk-common/version.in`
echo release=$release
- Then create a tar-ball using that shar1 marker:
rm -rf frysk-$release
git archive --prefix=frysk-$release/ $shar1 | tar xpf -
tar cfj frysk-$release.tar.bz2 frysk-$release
- as a sanity check try to build the tar-ball locally:
rm -rf build-$release && mkdir build-$release
( cd build-$release \
&& bunzip2 < ../frysk-$release.tar.bz2 | tar xpf - \
&& mkdir build \
&& cd build \
&& ../frysk-$release/autogen.sh \
&& make -j2 )
- finally, assuming the results are good, tag the release and push
it:
git tag -u <gpg-name> -m frysk-$release frysk-$release $shar1
git push --tags
Upload to Sourceware
You might need access to sourceware for this:
chmod a=r frysk-$release.tar.bz2
scp frysk-$release.tar.bz2 'sourceware.org:~ftp/pub/frysk'
ssh sourceware.org 'rm -f ~ftp/pub/frysk/.message'
cat <<EOF | ssh sourceware.org 'dd of=~ftp/pub/frysk/.message'
Frysk $release
`md5sum frysk-$release.tar.bz2`
$shar1 GIT SHAR1
EOF
ssh sourceware.org 'chmod a=r ~ftp/pub/frysk/.message'
Announce the Release
Some people like to immediatly post the announcement, while others
prefer to delay it a day or so giving the distros a chance to prepare
local frysk packages. Either way, the announcement should at least
include:
- All the contributors to this release (you can get this by going
through GIT and, perhaps, the ChangeLog files; something
like: git-log --after=frysk/0.2 --pretty=format:"%an %ae" | sort
-u
- The contents of the NEWS entry.
and might also include:
- Where to download frysk
- file check-sums
- a description of frysk
- ???
|