#!/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. # Doing this in a hook is a bad idea in general, but the prepare-commit-msg # hook is more suited to it. # # 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. #test "" = "$(grep '^Signed-off-by: ' "$1" | # sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { # echo >&2 Duplicate Signed-off-by lines. # exit 1 #} basedir=$(dirname $0) . $basedir/hook-functions einfo "Running $(basename $0) hook" #grep -E -q "(refs|closes): #[0-9]+" $1 || { # We could fetch the redmine issue but it would require credentials. # ewarn "No, or invalid, reference to a redmine issue." #} SUMMARY_LEN=`cat $1 |grep -E -v "^#" |head -n1 |wc -m |cut -f1 -d' '` [ $SUMMARY_LEN -gt 80 ] && eerror "Summary is way too long. ($SUMMARY_LEN characters)" [ $SUMMARY_LEN -gt 50 ] && ewarn "Summary is a bit long. ($SUMMARY_LEN characters)" grep -E -q "Conflicts" $1 && ewarn "Your commit message has statement of a conflict. Please clean that up." grep -q " " $1 && { sed "s/ / /g" -i $1 ewarn "You had utf-8 whitespace characters." } exit 0