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