2014-04-12 76 views
0

我想在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包含錯誤。

我該如何進行預先提交的工作?

+0

在開啓此功能之前,您應該考慮一些事項。運行jshint需要多長時間?一年需要多久?我得到的是,如果有人在jshint運行時進行檢查,那麼你將會遇到不好的時間。用戶會看到什麼樣的失敗消息(你不能假定他們使用的是什麼客戶端)。他們可能會認爲這個提交在它不能立即返回時就會被掛起。我認爲如果你用一個簡單的CI循環(也許用jenkins)來運行jshint然後發送結果,你的團隊會更快樂。 – thekbb

回答

0

無關

  • 我不明白,你爲什麼使用Git的,巫術在這裏,併爲SVN-交易

相關(部分)

如果你想監視客戶端的鉤子,並看到任何輸出,你必須重定向它t Ø標準錯誤(和你沒有做到這一點),這鉤子將返回到客戶端

問題,此腳本按預期方式工作在獨立模式

+0

我想監視客戶端的鉤子。我如何將它重定向到stderr?我還沒有測試過這個腳本是否可以獨立運行。 – 2619

+0

@ 2619 - ust在需要返回給客戶端的每個信息輸出(並從不需要的輸出中移除)中追加'2>&1'。請參閱http://stackoverflow.com/a/1928036/960558以獲得良好風格的拒絕消息 –

+0

仍然沒有影響。 – 2619