72 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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
 | 
