summaryrefslogtreecommitdiff
path: root/build-aux/do-release-commit-and-tag
diff options
context:
space:
mode:
authorAkim Demaille <akim@lrde.epita.fr>2012-07-05 15:41:20 +0200
committerAkim Demaille <akim@lrde.epita.fr>2012-07-05 17:12:34 +0200
commitb2df8951c1e67798bd47d7c372b81459f0d6a583 (patch)
tree47edf3b7b73bf3dc539978ae5220e063c9dd5c48 /build-aux/do-release-commit-and-tag
parentbe2b039116133e5fd07e07c5d272b8adb91d72b2 (diff)
downloadgnulib-b2df8951c1e67798bd47d7c372b81459f0d6a583.tar.gz
do-release-commit-and-tag: fix the previous commit
* build-aux/do-release-commit-and-tag: Actually the test was right, but the comment and the error message were misleading. Fix comment, and improve error message. Perform check first, so that NEWS is not modified uselessly.
Diffstat (limited to 'build-aux/do-release-commit-and-tag')
-rwxr-xr-xbuild-aux/do-release-commit-and-tag41
1 files changed, 27 insertions, 14 deletions
diff --git a/build-aux/do-release-commit-and-tag b/build-aux/do-release-commit-and-tag
index 329d0eb548..8beca86874 100755
--- a/build-aux/do-release-commit-and-tag
+++ b/build-aux/do-release-commit-and-tag
@@ -3,7 +3,7 @@
# controlled .prev-version file, automate the procedure by which we record
# the date, release-type and version string in the NEWS file. That commit
# will serve to identify the release, so apply a signed tag to it as well.
-VERSION=2012-07-05.13 # UTC
+VERSION=2012-07-05.15 # UTC
# Note: this is a bash script (could be zsh or dash)
@@ -77,6 +77,10 @@ EOF
exit
}
+## ------ ##
+## Main. ##
+## ------ ##
+
branch=master
builddir=.
@@ -107,6 +111,11 @@ test $# = 2 \
ver=$1
type=$2
+
+## ---------------------- ##
+## First, sanity checks. ##
+## ---------------------- ##
+
# Verify that $ver looks like a version number, and...
echo "$ver"|grep -E '^[0-9][0-9.]*[0-9]$' > /dev/null \
|| die "invalid version: $ver"
@@ -124,32 +133,36 @@ case $type in
*) die "invalid release type: $type";;
esac
+# No local modifications allowed.
+case $(git diff-index --name-only HEAD) in
+ '') ;;
+ *) die 'this tree is dirty; commit your changes first';;
+esac
+
+# Ensure the current branch name is correct:
+curr_br=$(git rev-parse --symbolic-full-name HEAD)
+test "$curr_br" = refs/heads/$branch || die not on branch $branch
+
# Extract package name from Makefile.
Makefile=$builddir/Makefile
pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' "$Makefile") \
|| die "failed to determine package name from $Makefile"
-# simple check: no question marks on line 3 of NEWS
-test "$(sed -n 3p NEWS)" != "$noteworthy_stub" \
- || die 'line 3 of NEWS looks fishy!'
+# Check that line 3 of NEWS is the stub line about to be replaced.
+test "$(sed -n 3p NEWS)" = "$noteworthy_stub" \
+ || die "line 3 of NEWS must be exactly '$noteworthy_stub'"
-# No dirt allowed.
-case $(git diff-index --name-only HEAD) in
- '') ;;
- *) die 'this tree is dirty; commit your changes first';;
-esac
+## --------------- ##
+## Then, changes. ##
+## --------------- ##
-# update NEWS to have today's date, plus desired version number and $type
+# Update NEWS to have today's date, plus desired version number and $type.
perl -MPOSIX -ni -e 'my $today = strftime "%F", localtime time;' \
-e 'my ($type, $ver) = qw('"$type $ver"');' \
-e 'my $pfx = "'"$noteworthy"'";' \
-e 'print $.==3 ? "$pfx $ver ($today) [$type]\n" : $_' \
NEWS || die 'failed to update NEWS'
-# Ensure the current branch name is correct:
-curr_br=$(git rev-parse --symbolic-full-name HEAD)
-test "$curr_br" = refs/heads/$branch || die not on branch $branch
-
printf "version $ver\n\n* NEWS: Record release date.\n" \
| git commit -F - -a || die 'git commit failed'
git tag -s -m "$pkg $ver" v$ver HEAD || die 'git tag failed'