干货|使用git中钩子文件做代码提交前的检查

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

1、场景和问题

日常开发中,代码合入流程一般是:先修改代码,提交代码到gerrit,通过CI检查和人工code-review之后,代码合入版本库。CI上一般会配置一些代码格式规范,单元测试覆盖率,圈复杂度之类的检查。

有时本地提交的代码,到CI检查报错了,查看原因,再本地修改提交,再提代码重做CI,比较麻烦。但是每次提交前手工执行这些检查命令或者脚本等容易忘记,且比较麻烦。


2、git钩子脚本

在.git/hooks目录中,有多种钩子文件,大部分文件都是以.sample为后缀,是示例文件,不生效。去掉.sample后缀才会生效。 

其中有个pre-commit.sample文件,这个钩子在执行"git commit"命令时被调用,而且可以通过在命令中添加 --no-verify参数来跳过。这个钩子没有参数,在得到提交消息和开始提交前被调用。如果钩子执行结果是非零,那么"git commit"命令就会中止执行,文件不会被提交。

默认的'pre-commit'钩子里实现的是检查非ascii文件名,例如:如果有中文命名的文件,就会报错。不过pre-commit里面默认的功能,一般我们不需要,我们可以自己重新编写这个pre-commit脚本文件,添加我们自己需要的一些检查即可。


3、实践举例

例如:简单的实现对go语言代码的两个静态检查,如果检查失败,脚本异常退出;如果检查成功,脚本正常退出

  
  
  
  1. [root@centos cradle]# cat .git/hooks/pre-commit

  2. #!/bin/sh

  3.  

  4. echo "begin check"

  5. cd /root/go/src/gitlab.zte.com.cn/dev

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值