wxWidgets/misc/scripts/svn/hooks/pre-commit
Vadim Zeitlin eeea7e8cf0 Don't apply svn commit hook checks to 2.8 branch.
Some of the files in 2.8 still use the old conventions, allow doing changes in
them without completely updating them to follow the rules checked by the hook.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70628 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-02-19 15:50:32 +00:00

81 lines
1.9 KiB
Bash
Executable File

#!/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 "src/(tiff|regex|jpeg|stc/scintilla)" | \
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.
;;
*)
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