#!/bin/bash # # To enable this hook, link it into .git/hooks/commit-msg like this: # ln -s ../../Documentation/maintainers/git-hooks-commit-msg .git/hooks/commit-msg FILE=$1 die() { echo "Aborting commit: $1" echo "(Your message was saved in $FILE)" exit 1 } summary=`head -n1 "$FILE"` ### Enforce first-line summary ### if [[ -z `grep '^\[[^]]\+\]' <<< "$summary"` ]] ; then die 'Summary (first line) should start with [changed path]' fi ### Enforce usage of repoman ### if [[ -n `grep -e '^\[Documentation' <<< "$summary"` ]] ; then # Do not enforce usage of repoman where it makes no sense exit 0 elif [[ -n `grep -e '^\[sets' <<< "$summary"` ]] ; then # Do not enforce usage of repoman where it makes no sense exit 0 elif [[ -n `grep -e '^\[profiles' <<< "$summary"` ]] ; then # Do not enforce usage of repoman where it makes no sense exit 0 elif [[ -n `grep -e '^\[eclass' <<< "$summary"` ]] ; then # Do not enforce usage of repoman where it makes no sense exit 0 elif [[ -n `grep -e '^\[metadata' <<< "$summary"` ]] ; then # Do not enforce usage of repoman where it makes no sense exit 0 elif grep '^NO_REPOMAN' "$FILE" >& /dev/null ; then # Allow i-know-what-i-am-doing override sed -i -e '/^NO_REPOMAN/d' "$FILE" exit 0 elif ! grep -e '(Portage version|Package-Manager' "$FILE" >& /dev/null ; then die 'Please use repoman to commit' fi exit 0