Git hook是一些在$GIT_DIR/hooks目錄的腳本,在被特定的事件(certain points)觸發後被調用.
我們可以在push代碼前,調用android lint檢查代碼,若lint檢查結果不符合規範,則中斷push操作,強制要求fix Lint Error.
如果要實現上述結果,我們需要做些什麼?
第一:升級Git版本
Git hooks貌似是在git version 1.8上才支持的.
我們在命令行執行git –version,貌似大家現在都是1.7
升級方法網上有,比較簡單
我沒有仔細研究升級方法,用了網上最笨的升級方法,依次執行下述命令即可(耗時、網絡):
sudo add-apt-repository ppa:pdoes/ppa
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
第二:添加hook腳本
在$GIT_DIR/hooks目錄中,添加一個pre-push的bash腳本文件,在其中寫上對應腳本,
則在每次執行push操作前,均會先執行pre-push腳本文件
第三:整理lint規則
如果我們直接lint.,則會檢查所有規則,耗時長,也無此必要,所以,我們需要整理一份需要特別check的規則。
Hook腳本的本質就是一個bash腳本,一個簡單的pre-push腳本如下
#!/bin/bash
#
echo "Run Android Lint, Please Wait..."
#IS_RUN_ANDROID_LINT=$(lint .)
echo
echo "Run Android Lint Result:"
ERROR_COUNT=0;
WARNINGS_COUNT=0;
if [[ $IS_RUN_ANDROID_LINT =~ ([0-9]{1,4})( errors)(\, )([0-9]{1,4})( warnings) ]];then
ERROR_COUNT=${BASH_REMATCH[1]}
WARNINGS_COUNT=${BASH_REMATCH[4]}
echo "We Found "$ERROR_COUNT" Lint Errors And "$WARNINGS_COUNT" Lint Warnings."
if [ $ERROR_COUNT -gt 0 ];then
#have lint error
echo "Please Fix the "$ERROR_COUNT" Errors"
#exit 1
else
#no error, just warning
echo
fi
else
echo "No Android Lint issues found."
fi
echo "Run <span style="font-family: Arial, Helvetica, sans-serif;">Android </span>Lint: Yes"
echo