3aee1ac3a1
release/bugs: Prints a list of bugs that are mentioned in git commits for a git revision, since previous release. - Very useful for updating the CHANGELOG file! release/go: Tests a git revision for correct compilation, and prepares files for release. - Makes the tarball - Makes a GPG signature for the tarball - Tags the release - Spits out URLs to edit and gives the changelog for copy/paste. release/email: Sends an email to the Openbox mailing list with the changelog and details about the release. Call this with the same parameters used for running release/go once it is finished, and the files are uploaded, etc. - Also emails mikachu re freshmeat.net
56 lines
1.3 KiB
Bash
56 lines
1.3 KiB
Bash
#!/bin/sh
|
|
|
|
NOW=$(date +%s)
|
|
SRCDIR="$PWD"
|
|
WORKDIR="/tmp/openbox.$NOW"
|
|
TESTDIR="$WORKDIR/.test"
|
|
|
|
clean() {
|
|
cd "$SRCDIR"
|
|
if test -d "$WORKDIR"; then
|
|
chmod -R +w "$WORKDIR"
|
|
rm -r -f "$WORKDIR"
|
|
fi
|
|
}
|
|
|
|
error() {
|
|
echo "error: $1"
|
|
test -n "$2" && echo "$2"
|
|
clean
|
|
exit 1
|
|
}
|
|
|
|
RELEASE_SHA=$(git rev-parse "$REV")
|
|
test $? = 0 || error "revision $REV not found"
|
|
|
|
#NON_MASTER=$(git rev-list $RELEASE_SHA ^master)
|
|
#test $? = 0 || error "git rev-list failed"
|
|
#test -z $NON_MASTER || error "REVISION contains commits not on master"
|
|
|
|
git new-workdir "$SRCDIR" "$WORKDIR"
|
|
test $? = 0 || error "git-new-workdir failed"
|
|
|
|
echo "working in $WORKDIR"
|
|
|
|
cd "$WORKDIR"
|
|
test $? = 0 || error "cd to $WORKDIR failed"
|
|
|
|
git checkout -q $RELEASE_SHA
|
|
test $? = 0 || error "git-checkout failed"
|
|
|
|
# get last release
|
|
if test -z "$LAST"; then
|
|
LAST=$(git describe --match 'release-*' --abbrev=0 $REV)
|
|
test $? = 0 || \
|
|
error "unable to find last release"
|
|
echo "Using previous release as $LAST"
|
|
fi
|
|
|
|
H="$(head -1 CHANGELOG|cut -d: -f 1)"
|
|
test $H = $VERSION ||
|
|
error "CHANGELOG does not contain version $VERSION"
|
|
|
|
CL="$(cat CHANGELOG|sed -n /^$VERSION:\$/,/^\$/p|tail -n +2|head -n -1)"
|
|
CLNOWRAP=$(echo "$CL" \
|
|
|sed -e "s/^ \*/*/"|sed -n '1h;1!H;${;g;s/\n / /g;p;}')
|
|
SHORTLOG="$(git shortlog --no-merges $LAST..$REV)"
|