转载

一个新朋友 Git Hooks

最近组内的小伙伴们被部门内的整个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,技术·生活·思考:

一个新朋友 Git Hooks
原文  http://blog.guoyb.com/2018/04/14/git-hooks/
正文到此结束
Loading...