Mercurial > hg > octave-kai > gnulib-hg
changeset 16967:f3f8be3a527d
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.
author | Akim Demaille <akim@lrde.epita.fr> |
---|---|
date | Thu, 05 Jul 2012 15:41:20 +0200 |
parents | d5fecd1974fb |
children | 20011163d6c7 |
files | ChangeLog build-aux/do-release-commit-and-tag |
diffstat | 2 files changed, 33 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2012-07-05 Akim Demaille <akim@lrde.epita.fr> + 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. + do-release-commit-and-tag: fix typo * build-aux/do-release-commit-and-tag: Be sure that NEWS does _not_ start with a stub.
--- 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 @@ exit } +## ------ ## +## Main. ## +## ------ ## + branch=master builddir=. @@ -107,6 +111,11 @@ 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 @@ *) 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'