#!/bin/sh if git rev-parse --verify HEAD >/dev/null 2>&1 ; then against=HEAD else # Initial commit: diff against an empty tree object against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 fi # Redirect output to stderr. exec 1>&2 #------------------------------------------------------------------------------- # Prevent files with non-ascii filenames from being committed. if test $(git diff --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 ; then echo "Error: Attempt to add a non-ascii file name." echo echo "This can cause problems if you want to work" echo "with people on other platforms." echo echo "To be portable it is advisable to rename the file ..." echo echo "Commit aborted." exit 1 fi #------------------------------------------------------------------------------- # Check the formatting of all C files. # http://man.openbsd.org/sed#r # http://man.openbsd.org/sed#E # http://netbsd.gw.com/cgi-bin/man-cgi?sed++NetBSD-current # https://github.com/freebsd/freebsd/blob/master/usr.bin/sed/main.c # http://git.savannah.gnu.org/gitweb/?p=sed.git;a=blob;f=sed/sed.c # GNU has -r and -E (undocumented); MacOS has -E but not -r; Sunos has neither. files=$(git diff-index --name-status --cached HEAD | grep -v ^D | sed -E "s/^[A-Z]+[A-Z0-9]*[ \t]+/ /") cfiles="" for f in $files ; do if test `dirname $f` = "src/ALAC" ; then echo "Skipping cstyle checking on $f" elif test `echo $f | grep -c "\.[ch]$"` -gt 0 ; then cfiles="$cfiles $f" fi done if test -n "$cfiles" ; then Scripts/cstyle.py $cfiles if test $? -ne 0 ; then echo echo "Commit aborted. Fix the above error before trying again." exit 1 fi fi #------------------------------------------------------------------------------- # Check the copyright notice of all files to be commited. user=`git config --global user.email` year=`date +"%Y"` missing_copyright_year="" if test $user = "erikd@mega-nerd.com" ; then for f in $files ; do if test `head -5 $f | grep -i copyright | grep -c -i $user` -gt 0 ; then user_copyright=`grep -i copyright $f | grep $user | grep -c $year` if test $user_copyright -lt 1 ; then missing_copyright_year="$missing_copyright_year $f" fi fi done fi if test -n "$missing_copyright_year" ; then echo "Missing current year in the copyright notice of the following files:" for f in $missing_copyright_year ; do echo " $f" done echo "Commit aborted." exit 1 fi exit 0