最近组内的小伙伴们被部门内的整个code review流程搞得头痛不已(回头我详细说说我对code review的看法),所以一些非线上核心业务的工程,纷纷迁移至Git平台。公司的Git平台使用的是一个定制化的GitLabs,各种权限的管理基本都下放到了组这一级别,所以更加自由灵活。
当然,Git的灵活并不意味着要放弃对代码质量的要求。所以,利用Git提供的Hooks(钩子),可以方便的将一些Lint程序添加到commit之前,做自动检查。你需要做的,仅仅是将相关的脚本,复制到.git/hooks目录下;并且,在检查失败时返回非0值,这就会阻止Git接下来的工作。
.git/hooks目录下有一些以.sample结尾的Hooks例程,可供参考。
在其中一个工程目录下,我使用Git Hooks在每次push之前做检查,获取此次push操作将会上传Git Server的代码文件,判断其是否需要同时上传至另一个计算平台,如果是的话,就调用计算平台的API,同时上传此代码文件到该计算平台。之后,再进行push操作。这差不多也算是一个简易的发布系统了哈,可以保证计算平台上的文件和Git Server上的一致,并且利用Git做了相关的版本控制。
Git在客户端提供了如下Hooks:
prepare-commit-msg,commit-msg,post-commit, applypatch-msg,pre-applypatch,post-applypatch, pre-rebase,post-checkout,post-merge, pre-push……
根据名字就可以看出这些Hooks是在何时执行的。
如果你是Git服务器的管理员,还可以设置如下服务器端Hooks:
pre-receive、update、post-receive
这几个Hooks都和push操作有关。放到服务器端运行,可以方便的和发布系统结合,或者干脆自己实现一个发布系统。
更多详细的有关Git hooks的介绍,可以参阅 官方文档
推荐阅读:
使用双buffer无锁化
不要拷贝
读写锁的性能一定更好吗转载请注明出处: http://blog.guoyb.com/2018/04/14/git-hooks/
欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考: