我想在svn中爲jshint添加預先提交鉤子。因爲我剛接觸svn,所以我需要一些幫助。我已經做了一些跟隨的工作。下面是我的本地回購的文件夾結構在subversion(svn)中添加預先提交鉤子
svn-repo
branches
hooks
pre-commit.sh
tags
trunk
scripts
script.js
index.html
.jshintrc
這裏是我的pre-commit鉤子代碼
ROOT_DIR=$(git rev-parse --show-toplevel) # gets the path of this repo
CONF="--config=${ROOT_DIR}/build/config/jshint.json" # path of your jshint config
JSHINT=$(which jshint) # jshint path
if git rev-parse --verify HEAD >/dev/null 2>&1; then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
for file in $(git diff-index --name-only ${against} -- | egrep \.js); do
if $JSHINT $file ${CONF} 2>&1 | grep 'No errors found' ; then
echo "jslint passed ${file}"
exit 0
else
$JSHINT $file
exit 1
fi
done
我全球的裝機量jshint,位於下方的位置
/usr/local/bin/jshint
現在,當我犯與不正確的JavaScript然後它仍然被提交併且不會拋出任何錯誤,即使js根據.jshintrc包含錯誤。
我該如何進行預先提交的工作?
在開啓此功能之前,您應該考慮一些事項。運行jshint需要多長時間?一年需要多久?我得到的是,如果有人在jshint運行時進行檢查,那麼你將會遇到不好的時間。用戶會看到什麼樣的失敗消息(你不能假定他們使用的是什麼客戶端)。他們可能會認爲這個提交在它不能立即返回時就會被掛起。我認爲如果你用一個簡單的CI循環(也許用jenkins)來運行jshint然後發送結果,你的團隊會更快樂。 – thekbb