File: pre-commit

package info (click to toggle)
wxwidgets3.0 3.0.5.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 120,464 kB
  • sloc: cpp: 896,633; makefile: 52,303; ansic: 21,971; sh: 5,713; python: 2,940; xml: 1,534; perl: 264; javascript: 33
file content (86 lines) | stat: -rwxr-xr-x 2,192 bytes parent folder | download | duplicates (7)
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