wxMessageBox off the main thread lost result code.
[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 "wxWidgets/vendor" | \
25                     egrep -v "src/(expat|tiff|regex|jpeg|stc/scintilla|zlib)" | \
26                     egrep -v "src/msw/version.rc" | \
27                     egrep -v "_wrap.cpp" | \
28                     egrep -v "wxPython/.*/docs/.*\.html$"`
29
30 # analyze the changed files to find all non-binary and all source files
31 for f in $all_changed_files; do
32     mimetype=`svnl proplist -v $f |
33                 fgrep "svn:mime-type" |
34                 sed 's/^ svn:mime-type : //'`
35     case $mimetype in
36         ''|text/*)
37             ;;
38
39         *)
40             continue
41             ;;
42     esac
43
44     changed_text_files="$changed_text_files $f"
45
46     case $f in
47         *.cpp|*.h|*.py)
48             changed_sources="$changed_sources $f"
49             ;;
50     esac
51 done
52
53 for f in $changed_sources; do
54      if  svnl cat $f | fgrep -q '       '; then
55          echo "Please remove TABs from $f before committing." >&2
56          rc=1
57      fi
58
59      case $f in
60         */wx/chartype.h)
61             # This file defines _T() for compatibility so don't check it.
62             ;;
63
64         */docs/doxygen/overviews/changes_since28.h)
65             # And this one describes changes from _T() to wxT().
66             ;;
67
68         *)
69             if  svnl cat $f | fgrep -qw '_T'; then
70                 echo "Please use wxT() instead of _T() in $f." >&2
71                 rc=1
72             fi
73             ;;
74     esac
75 done
76
77 for f in $changed_text_files; do
78     if ! svnl cat $f | iconv -f utf8 -t WCHAR_T > /dev/null; then
79         echo "File $f doesn't use UTF-8, please convert it before committing." >&2
80         echo "(or set svn:mime-type property correctly if the file is binary)." >&2
81         rc=1
82     fi
83 done
84
85 exit $rc
86