--- /dev/null
+#!/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)"