Android GitHooks 提交信息规范和代码格式规范
概述:
GitHook是推行提交规范,根据仓库状态改变项目环境,监测和优化开发工作流的可触发行为。
GitHook是在git仓库中发生特定事件时自动被执行的脚本,它们存放于.git/hooks路径下,默认情况该路径下自带一些.sample文件,这些文件去掉后缀名便是可被触发的脚本。而且脚本完全可定制。
GitHooks种类:
这些脚本没有脚本语言限制,可以是shell,python,groovy等等。
其中本地hook文件:
- pre-commit
- prepare-commit-msg
- commit-msg
- post-commit
- post-checkout
- pre-rebase
当前我们只关心两个脚本:
1.pre-commit:
该脚本在每次执行git commit命令时,git向你询问提交信息或者生产提交对象时被触发,通过这个脚本可以用这个脚本检查提交代码的格式问题。
该脚本不接收参数,以非0状态退出,会放弃整个提交。
2.commit-msg:
该脚本在用户输入提交信息之后被调用,调用时机在pre-commit之后。通过这个脚本可以检查提交信息的规范性。
该脚本接收一个参数fileName(提交信息的文件名,用于获取提交信息详情),以非0状态退出放弃提交。
尽可能的同步触发脚本:
因为我们使用的是本地仓库.git下的脚本,需要尽可能的保证所有人自动触发脚本,就需要将脚本提交到服务器。方案:
在项目根目录下创建gitHooks路径,将可执行脚本放入,然后在本地仓库.git/hooks路径下编写指向真正实现逻辑的脚本。
如此就可以保证在进行脚本变动时保证其他开发成员使用的是最新的脚本。
使用:
1.首先将gitHooks文件夹拷贝至项目根目录下;
2.在项目根目录下的build.gradle中配置部分代码;
3.执行copyGithookScriptToLocalDir task将commit-msg和pre-commit复制到.git下。
note:
1.Linux或mac系统需要在脚本目录下执行chmod +x 脚本名称 添加可执行权限。
2.因为存在groovy脚本,需要配置groovy环境。
其中,localScript路径下便是链接脚本,format_commit-msg和format_pre-commit便是真正影响git工作流的脚本。
demo下载(包含脚本及checkstyle文件):https://github.com/BigBigerWolf/githook
参考资料:https://github.com/geeeeeeeeek/git-recipes/wiki/5.4-Git