X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/078a94e00d4922cadb7682c38add735865c6c1b5..f1cfa1132c308c57a3d3996872cf46bbb038cff5:/misc/scripts/svn/hooks/pre-commit diff --git a/misc/scripts/svn/hooks/pre-commit b/misc/scripts/svn/hooks/pre-commit index 9cacb13d44..a070e5893d 100755 --- a/misc/scripts/svn/hooks/pre-commit +++ b/misc/scripts/svn/hooks/pre-commit @@ -5,20 +5,75 @@ TXN="$2" SVNLOOK=/usr/bin/svnlook -changed_cpp_files=`$SVNLOOK changed "$REPOS" -t "$TXN" | \ +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 exclude message catalog files as they may be not in UTF-8 +all_changed_files=`svnl changed | \ grep "^[AU]" | \ sed 's/^....//' | \ - egrep "\.(cpp|h|py)$" | \ - egrep -v "src/(tiff|regex|jpeg|stc/scintilla)" ` + egrep -v "locale/.*\.po$" | \ + egrep -v "src/(tiff|regex|jpeg|stc/scintilla)" | \ + egrep -v "_wrap.cpp"` -rc=0 +# 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/*) + ;; -set -e -for f in $changed_cpp_files; do - if $SVNLOOK cat "$REPOS" -t "$TXN" $f | fgrep -q ' '; then + *) + 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 +