1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
svnl() {
cmd=$1
shift
$SVNLOOK $cmd "$REPOS" -t "$TXN" $*
}
rc=0
# exclude all third-party files from consideration, we don't want to do any
# checks for them
#
# Also don't impose any constraints on commits to previous 2.x branches.
all_changed_files=`svnl changed | \
grep "^[AU]" | \
sed 's/^....//' | \
egrep -v "branches/WX_2_" | \
egrep -v "wxWidgets/vendor" | \
egrep -v "src/(expat|tiff|regex|jpeg|stc/scintilla|zlib)" | \
egrep -v "src/msw/version.rc" | \
egrep -v "_wrap.cpp" | \
egrep -v "wxPython/.*/docs/.*\.html$"`
# 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
case $f in
*/wx/chartype.h)
# This file defines _T() for compatibility so don't check it.
;;
*/docs/doxygen/overviews/changes_since28.h)
# And this one describes changes from _T() to wxT().
;;
*)
if svnl cat $f | fgrep -qw '_T'; then
echo "Please use wxT() instead of _T() in $f." >&2
rc=1
fi
;;
esac
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
|