openbox/release/common
Dana Jansens 3aee1ac3a1 Create some Openbox release scripts
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
2012-09-30 15:24:50 -04:00

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)"