This a a prep-work for if and when we use gerrit it is very important to call gerrit's commit-msg hook and the sooner we teach our own hook to play nice with it the less likely we will have issue during migration
69 lines
2.0 KiB
Bash
Executable File
69 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# An example hook script to check the commit log message.
|
|
# Called by git-commit with one argument, the name of the file
|
|
# that has the commit message. The hook should exit with non-zero
|
|
# status after issuing an appropriate message if it wants to stop the
|
|
# commit. The hook is allowed to edit the commit message file.
|
|
#
|
|
# To enable this hook, make this file executable.
|
|
|
|
# Uncomment the below to add a Signed-off-by line to the message.
|
|
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
|
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
|
|
|
# This example catches duplicate Signed-off-by lines.
|
|
|
|
base_dir=$(dirname $0)
|
|
|
|
abort() {
|
|
cp $1 $1.save
|
|
cat >&2 <<EOF
|
|
Commit aborted, your commit message was saved as '$1.save'.
|
|
|
|
Reason: $2
|
|
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
|
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
|
abort "$1" "Duplicate Signed-off-by lines."
|
|
}
|
|
|
|
# Check that the first line exists, and is not an asterisk
|
|
|
|
if [ -z "`head -n 1 $1 | grep -v '^[ \t]*\*$'`" ] ; then
|
|
abort "$1" "Please provide the general description on the first line."
|
|
fi
|
|
|
|
# ...and that it is not too long
|
|
|
|
if [ "`head -n 1 $1 | wc -c`" -gt 79 ] ; then
|
|
abort "$1" "The first line is too long, please try to fit into 79 characters."
|
|
fi
|
|
|
|
# ...and that it does not continue on the second line
|
|
if [ "`wc -l < $1`" -gt 1 -a -n "`head -n 2 $1 | tail -n 1 | sed 's/^#.*//'`" ] ; then
|
|
abort "$1" "The second line is not empty - maybe the first line continues there?"
|
|
fi
|
|
|
|
# Check that the message is not a ChangeLog-like one
|
|
|
|
if [ -n "`head -n 1 $1 | grep '^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}.*<.*@.*>'`" ] ; then
|
|
abort "$1" "The commit message looks like ChangeLog, please use the git form."
|
|
fi
|
|
|
|
# Check for whitespace in front of *'s
|
|
|
|
if [ -n "`grep '^[[:space:]]\+\*.*:' $1`" -a -z "`grep '^\*' $1`" ] ; then
|
|
abort "$1" "Please don't use whitespace in front of '* file: Description.' entries."
|
|
fi
|
|
|
|
if [ -f "${base_dir}/gerrit-commit-msg" ] ; then
|
|
source "${base_dir}/gerrit-commit-msg"
|
|
fi
|
|
|
|
exit 0
|