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