
* autogen.sh: Install Git hooks, if using Git. * build-aux/git-hooks/commit-msg, build-aux/git-hooks/pre-commit: New files, which are Git hooks that check for portable file names, and do some simple checks for commit message format.
90 lines
2.1 KiB
Bash
Executable file
90 lines
2.1 KiB
Bash
Executable file
#!/bin/sh
|
|
# Check the format of GNU Emacs change log entries.
|
|
|
|
# Copyright 2014 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 <http://www.gnu.org/licenses/>.
|
|
|
|
# Written by Paul Eggert.
|
|
|
|
# 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_octal='\302\242'
|
|
at_sign=`
|
|
printf "${cent_sign_utf8_octal}@" |
|
|
awk '{print substr($0, 2)}' 2>/dev/null
|
|
`
|
|
if test "$at_sign" != @; then
|
|
at_sign=`
|
|
printf "${cent_sign_utf8_octal}@" |
|
|
LC_ALL=en_US.utf8 awk '{print substr($0, 2)}' 2>/dev/null
|
|
`
|
|
if test "$at_sign" = @; then
|
|
LC_ALL=en_US.utf8; export LC_ALL
|
|
fi
|
|
fi
|
|
|
|
# Check the log entry.
|
|
exec awk '
|
|
/^#/ { next }
|
|
|
|
!/^.*$/ {
|
|
print "Invalid character (not UTF-8)"
|
|
status = 1
|
|
}
|
|
|
|
nlines == 0 && !/[^[:space:]]/ { next }
|
|
|
|
{ nlines++ }
|
|
|
|
nlines == 1 && /^[[:space:]]/ {
|
|
print "White space at start of first line"
|
|
status = 1
|
|
}
|
|
|
|
nlines == 2 && /[^[:space:]]/ {
|
|
print "Nonempty second line"
|
|
status = 1
|
|
}
|
|
|
|
/[[:cntrl:]]/ {
|
|
print "Text contains control character; please use spaces instead of tabs"
|
|
status = 1
|
|
}
|
|
|
|
72 < length && /[[:space:]]/ {
|
|
print "Line longer than 72 characters"
|
|
status = 1
|
|
}
|
|
|
|
140 < length {
|
|
print "Word longer than 140 characters"
|
|
status = 1
|
|
}
|
|
|
|
/^Signed-off-by: / {
|
|
print "'Signed-off-by:' present"
|
|
status = 1
|
|
}
|
|
|
|
END {
|
|
if (nlines == 0) {
|
|
print "Empty change log entry"
|
|
status = 1
|
|
}
|
|
exit status
|
|
}
|
|
' <"$1"
|