#!/bin/sh # Check the format of GNU Emacs change log entries. # Copyright 2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. # GNU Emacs is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # GNU Emacs is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . COMMIT_MSG_FILE=$1 COMMIT_SOURCE=$2 SHA1=$3 # Prefer gawk if available, as it handles NUL bytes properly. if type gawk >/dev/null 2>&1; then awk=gawk else awk=awk fi # Use a UTF-8 locale if available, so that the UTF-8 check works. # Use U+00A2 CENT SIGN to test whether the locale works. cent_sign_utf8_format='\302\242\n' cent_sign=`printf "$cent_sign_utf8_format"` print_at_sign='BEGIN {print substr("'$cent_sign'@", 2)}' at_sign=`$awk "$print_at_sign" /dev/null` if test "$at_sign" != @; then at_sign=`LC_ALL=en_US.UTF-8 $awk "$print_at_sign" /dev/null` if test "$at_sign" = @; then LC_ALL=en_US.UTF-8 else LC_ALL=C fi export LC_ALL fi exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" -v file="$COMMIT_MSG_FILE" ' /^Signed-off-by: / { print "'\''Signed-off-by:'\'' in commit message" status = 1 } END { if (status != 0) { print "Commit aborted; please see the file 'CONTRIBUTE'" } exit status } ' <"$COMMIT_MSG_FILE"