コミットする前にJavaScriptファイルをチェックするためにJavaScriptLintを使用するために、次のpre-commitフックがあります。
#!/bin/env bash
REPOS="$1"
TXN="$2"
ECHO=/bin/echo
GREP=/bin/grep
SED=/bin/sed
SVN=/usr/bin/svn
SVNLOOK=/usr/bin/svnlook
FILES_CHANGED=`$SVNLOOK changed -r$TXN $REPOS | $SED -e "s/^....//g"`
JSL=/usr/local/bin/jsl
JSL_CONF=/usr/local/etc/jsl.conf
for FILE in $FILES_CHANGED
do
if $ECHO $FILE | $GREP "\.js$"
then
$SVN cat -r$TXN file://$REPOS/$FILE | $JSL -conf $JSL_CONF -stdin 1>&2
JSL_ERROR_CODE=$?
if [ $JSL_ERROR_CODE != 0 ]
then
exit $JSL_ERROR_CODE
fi
fi
done
# If we got here, nothing is wrong.
exit 0
このコードはローカルで次のように機能します。./pre-commit/my/ svn / repo / location 6781#番号はトランザクション番号です
しかし、 svncommitでは正しくエラーになりません。
私はすでに説明しました:
- $ PATHがないので、すべてのコマンドパスを明示的に設定しました。
- 終了用のjslコマンドから正しいエラーコードをキャッチしています。
- jslコマンドのSTDOUTをSTDERRにプッシュしているので、コミット失敗時に表示されます。
私は何が欠けていますか?
あなたの、
トレバー