73 lines
1.7 KiB
Text
73 lines
1.7 KiB
Text
|
#!/bin/sh
|
|||
|
# Check for lexical syntax of commits in the current push that
|
|||
|
|
|||
|
refname="$1"
|
|||
|
oldrev="$2"
|
|||
|
newrev="$3"
|
|||
|
|
|||
|
if [ -z "$GIT_DIR" ]; then
|
|||
|
echo "Don't run this script from the command line." >&2
|
|||
|
echo " (if you want, you could supply GIT_DIR then run" >&2
|
|||
|
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
|
|||
|
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
|||
|
echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
|
|||
|
# --- Check types
|
|||
|
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
|||
|
zero="0000000000000000000000000000000000000000"
|
|||
|
if [ "$newrev" = "$zero" ]; then
|
|||
|
newrev_type=delete
|
|||
|
else
|
|||
|
newrev_type=$(git cat-file -t $newrev)
|
|||
|
fi
|
|||
|
|
|||
|
# Good commit by default
|
|||
|
bad=0
|
|||
|
|
|||
|
IFS='
|
|||
|
'
|
|||
|
|
|||
|
# If the new object is a commit...
|
|||
|
if [ "$newrev_type" = "commit" ]; then
|
|||
|
# Loop over the new revisions
|
|||
|
for c in $(git rev-list $old_rev..$newrev); do
|
|||
|
# And each new file
|
|||
|
for s in $(git ls-tree $c | egrep '\.ml(i?)$'; do
|
|||
|
f=$(echo $s | awk '{ print $3 }')
|
|||
|
name=$(echo $s | awk '{ print $4 }')
|
|||
|
tmp=$(tempfile) || exit 1
|
|||
|
trap "rm -f -- '$tmp'" EXIT
|
|||
|
git cat-file blob $f > $tmp
|
|||
|
# $tmp now holds the content of new file $name
|
|||
|
|
|||
|
if [ `wc -L $tmp | awk '{ print $1 }'` -gt 80 ]; then
|
|||
|
echo "Commit $c/File \"$name\" has lines with more than 80 columns."
|
|||
|
bad=1
|
|||
|
fi
|
|||
|
|
|||
|
grep -P '\t' $tmp > /dev/null
|
|||
|
if [ $? -eq 0 ]; then
|
|||
|
echo "Commit $c/File \"$name\" has tabulations in it."
|
|||
|
bad=1
|
|||
|
fi
|
|||
|
|
|||
|
grep -P '( |\t)+$' $tmp > /dev/null
|
|||
|
if [ $? -eq 0 ]; then
|
|||
|
echo "Commit $c/File \"$name\" has trailing whitespace."
|
|||
|
bad=1
|
|||
|
fi
|
|||
|
|
|||
|
# Delete temporary file and remove the associated trap
|
|||
|
rm -f -- '$tmp'
|
|||
|
trap - EXIT
|
|||
|
done
|
|||
|
done
|
|||
|
fi
|
|||
|
|
|||
|
exit $bad
|