gitlab 服务端 hook,拦截糟糕的提交到仓库
背景
每当我接收一份新的代码,代码拿到手要做的第一件事就是 git log,看看这份代码的提交记录,最近提交的情况,做了些什么。但往往看到的 git log 杂乱无章,不知道每次提交到底是做了些什么。由此可见,在团队中,CHANGELOG 的重要性不言而喻,不仅有助于他人帮忙 review 代码,熟悉代码,也能高效的输出 CHANGELOG,对项目管理也至关重要。我们本文介绍使用 git 的服务端 hook 来针对 change log 进行校验,拦截不符合我们规范的提交。
服务端 hook 介绍
服务端 git hook 氛围三种,分别是 pre-receive、update、post-receive,这三个步骤就是我们本地 push 完代码服务端要做的事情,如图 1 所示:
我们可以在 pre-receive 阶段来做提交信息的校验,如果不符合我们的要求,直接返回非 0,则该推送便不会推送到 gitlab 仓库中去。
配置服务端 hook
环境配置
gitlab 版本:13.2
hook 配置
1、找到要配置仓库在 gitlab 中存储的路径,但因 gitlab 的仓库自某个版本开始采用 hash 存储,我们想要知道仓库对应的物理路径,需要到 gitlab 的 postgresql 数据库中的表 project_repositories 中,根据 project_id 能拿到对应的物理路径;
2、当拿到仓库对应的物理路径后,我们打开,目录如下:
3、hooks 中是 gitlab 示例的一些钩子,我们需要新建目录 custom_hooks,然后用 vim 新建文件 pre-receive,pre-receive 文件内容如下:
4、在本地尝试推送,推送显示如下,如果不符合规范则无法提交成功
更多
如探索更多关于服务端 hook 的功能,可以与第三方系统,例如 jira 等做交互,打造属于自己团队更适用的工具。
版权声明: 本文为 InfoQ 作者【阿呆】的原创文章。
原文链接:【http://xie.infoq.cn/article/b077c8d4b793369de4c4eb347】。文章转载请联系作者。
评论