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'