2009-09-18 12:28:04 -04:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
REPOS="$1"
|
|
|
|
TXN="$2"
|
|
|
|
|
|
|
|
SVNLOOK=/usr/bin/svnlook
|
|
|
|
|
2009-09-23 16:33:34 -04:00
|
|
|
svnl() {
|
|
|
|
cmd=$1
|
|
|
|
shift
|
|
|
|
$SVNLOOK $cmd "$REPOS" -t "$TXN" $*
|
2009-09-18 12:28:10 -04:00
|
|
|
}
|
|
|
|
|
2009-09-23 16:33:34 -04:00
|
|
|
rc=0
|
|
|
|
|
|
|
|
# exclude all third-party files from consideration, we don't want to do any
|
|
|
|
# checks for them
|
2009-10-12 06:38:43 -04:00
|
|
|
#
|
|
|
|
# also exclude message catalog files as they may be not in UTF-8
|
2009-09-23 16:33:34 -04:00
|
|
|
all_changed_files=`svnl changed | \
|
2009-09-18 12:28:04 -04:00
|
|
|
grep "^[AU]" | \
|
2009-09-23 16:33:34 -04:00
|
|
|
sed 's/^....//' | \
|
2009-10-12 06:38:43 -04:00
|
|
|
egrep -v "locale/.*\.po$" | \
|
2009-10-03 20:00:12 -04:00
|
|
|
egrep -v "src/(tiff|regex|jpeg|stc/scintilla)" | \
|
2009-10-12 06:38:43 -04:00
|
|
|
egrep -v "_wrap.cpp"`
|
2009-09-18 12:28:04 -04:00
|
|
|
|
2009-09-23 16:33:34 -04:00
|
|
|
# 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
|
2009-09-18 12:28:10 -04:00
|
|
|
|
|
|
|
for f in $changed_sources; do
|
2009-09-23 16:33:34 -04:00
|
|
|
if svnl cat $f | fgrep -q ' '; then
|
2009-09-18 12:28:04 -04:00
|
|
|
echo "Please remove TABs from $f before committing." >&2
|
|
|
|
rc=1
|
|
|
|
fi
|
2012-01-09 13:48:42 -05:00
|
|
|
|
|
|
|
case $f in
|
|
|
|
*/wx/chartype.h)
|
|
|
|
# This file defines _T() for compatibility so don't check it.
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
if svnl cat $f | fgrep -qw '_T'; then
|
|
|
|
echo "Please use wxT() instead of _T() in $f." >&2
|
|
|
|
rc=1
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
2009-09-18 12:28:04 -04:00
|
|
|
done
|
|
|
|
|
2009-09-23 16:33:34 -04:00
|
|
|
for f in $changed_text_files; do
|
|
|
|
if ! svnl cat $f | iconv -f utf8 -t WCHAR_T > /dev/null; then
|
2009-09-18 12:28:10 -04:00
|
|
|
echo "File $f doesn't use UTF-8, please convert it before committing." >&2
|
2009-09-23 16:33:34 -04:00
|
|
|
echo "(or set svn:mime-type property correctly if the file is binary)." >&2
|
2009-09-18 12:28:10 -04:00
|
|
|
rc=1
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2009-09-18 12:28:04 -04:00
|
|
|
exit $rc
|
2009-10-03 20:00:12 -04:00
|
|
|
|