diff options
author | Akim Demaille <akim@lrde.epita.fr> | 2012-07-05 15:41:20 +0200 |
---|---|---|
committer | Akim Demaille <akim@lrde.epita.fr> | 2012-07-05 17:12:34 +0200 |
commit | b2df8951c1e67798bd47d7c372b81459f0d6a583 (patch) | |
tree | 47edf3b7b73bf3dc539978ae5220e063c9dd5c48 /build-aux/do-release-commit-and-tag | |
parent | be2b039116133e5fd07e07c5d272b8adb91d72b2 (diff) | |
download | gnulib-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-x | build-aux/do-release-commit-and-tag | 41 |
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' |