]> git.saurik.com Git - wxWidgets.git/blob - misc/scripts/svn/hooks/pre-commit
Allow using _T() in docs/doxygen/overviews/changes_since28.h.
[wxWidgets.git] / misc / scripts / svn / hooks / pre-commit
1 #!/bin/sh
2
3 REPOS="$1"
4 TXN="$2"
5
6 SVNLOOK=/usr/bin/svnlook
7
8 svnl() {
9 cmd=$1
10 shift
11 $SVNLOOK $cmd "$REPOS" -t "$TXN" $*
12 }
13
14 rc=0
15
16 # exclude all third-party files from consideration, we don't want to do any
17 # checks for them
18 #
19 # Also don't impose any constraints on commits to previous 2.x branches.
20 all_changed_files=`svnl changed | \
21 grep "^[AU]" | \
22 sed 's/^....//' | \
23 egrep -v "branches/WX_2_" | \
24 egrep -v "src/(tiff|regex|jpeg|stc/scintilla)" | \
25 egrep -v "_wrap.cpp" | \
26 egrep -v "wxPython/.*/docs/.*\.html$"`
27
28 # analyze the changed files to find all non-binary and all source files
29 for f in $all_changed_files; do
30 mimetype=`svnl proplist -v $f |
31 fgrep "svn:mime-type" |
32 sed 's/^ svn:mime-type : //'`
33 case $mimetype in
34 ''|text/*)
35 ;;
36
37 *)
38 continue
39 ;;
40 esac
41
42 changed_text_files="$changed_text_files $f"
43
44 case $f in
45 *.cpp|*.h|*.py)
46 changed_sources="$changed_sources $f"
47 ;;
48 esac
49 done
50
51 for f in $changed_sources; do
52 if svnl cat $f | fgrep -q ' '; then
53 echo "Please remove TABs from $f before committing." >&2
54 rc=1
55 fi
56
57 case $f in
58 */wx/chartype.h)
59 # This file defines _T() for compatibility so don't check it.
60 ;;
61
62 */docs/doxygen/overviews/changes_since28.h)
63 # And this one describes changes from _T() to wxT().
64 ;;
65
66 *)
67 if svnl cat $f | fgrep -qw '_T'; then
68 echo "Please use wxT() instead of _T() in $f." >&2
69 rc=1
70 fi
71 ;;
72 esac
73 done
74
75 for f in $changed_text_files; do
76 if ! svnl cat $f | iconv -f utf8 -t WCHAR_T > /dev/null; then
77 echo "File $f doesn't use UTF-8, please convert it before committing." >&2
78 echo "(or set svn:mime-type property correctly if the file is binary)." >&2
79 rc=1
80 fi
81 done
82
83 exit $rc
84