赞
踩
点击上方“中兴开发者社区”,关注我们
每天读一篇一线开发者原创好文
日常开发中,代码合入流程一般是:先修改代码,提交代码到gerrit,通过CI检查和人工code-review之后,代码合入版本库。CI上一般会配置一些代码格式规范,单元测试覆盖率,圈复杂度之类的检查。
有时本地提交的代码,到CI检查报错了,查看原因,再本地修改提交,再提代码重做CI,比较麻烦。但是每次提交前手工执行这些检查命令或者脚本等容易忘记,且比较麻烦。
在.git/hooks目录中,有多种钩子文件,大部分文件都是以.sample为后缀,是示例文件,不生效。去掉.sample后缀才会生效。
其中有个pre-commit.sample文件,这个钩子在执行"git commit"命令时被调用,而且可以通过在命令中添加 --no-verify参数来跳过。这个钩子没有参数,在得到提交消息和开始提交前被调用。如果钩子执行结果是非零,那么"git commit"命令就会中止执行,文件不会被提交。
默认的'pre-commit'钩子里实现的是检查非ascii文件名,例如:如果有中文命名的文件,就会报错。不过pre-commit里面默认的功能,一般我们不需要,我们可以自己重新编写这个pre-commit脚本文件,添加我们自己需要的一些检查即可。
例如:简单的实现对go语言代码的两个静态检查,如果检查失败,脚本异常退出;如果检查成功,脚本正常退出
[root@centos cradle]# cat .git/hooks/pre-commit
#!/bin/sh
echo "begin check"
cd /root/go/src/gitlab.zte.com.cn/dev
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。