wxWidgets/misc/scripts/svn/hooks/pre-commit
Vadim Zeitlin 0126e6d256 Exclude binary files from the checks done by the pre-commit hook.
We shouldn't check that binary files are UTF-8 so determine whether the file
is binary by looking at its svn:mime-type and only do the check for the text
files.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62045 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-23 20:33:34 +00:00

63 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
svnl() {
cmd=$1
shift
$SVNLOOK $cmd "$REPOS" -t "$TXN" $*
}
set -e
rc=0
# exclude all third-party files from consideration, we don't want to do any
# checks for them
all_changed_files=`svnl changed | \
grep "^[AU]" | \
sed 's/^....//' | \
egrep -v "src/(tiff|regex|jpeg|stc/scintilla)"`
# analyze the changed files to find all non-binary and all source files
for f in $all_changed_files; do
mimetype=`svnl proplist -v $f |
fgrep "svn:mime-type" |
sed 's/^ svn:mime-type : //'`
case $mimetype in
''|text/*)
;;
*)
continue
;;
esac
changed_text_files="$changed_text_files $f"
case $f in
*.cpp|*.h|*.py)
changed_sources="$changed_sources $f"
;;
esac
done
for f in $changed_sources; do
if svnl cat $f | fgrep -q ' '; then
echo "Please remove TABs from $f before committing." >&2
rc=1
fi
done
for f in $changed_text_files; do
if ! svnl cat $f | iconv -f utf8 -t WCHAR_T > /dev/null; then
echo "File $f doesn't use UTF-8, please convert it before committing." >&2
echo "(or set svn:mime-type property correctly if the file is binary)." >&2
rc=1
fi
done
exit $rc