微信号:TechTalking

介绍:这可能是最接地气的技术分享公众号,我愿在这里与你们分享成长路上的点点滴滴. 关注各类Linux相关后端技术,关爱程序员的生活,与你分享我的思考. 技术·生活·思考

一个新朋友 Git Hooks

2018-04-14 11:45 茄仁波切

点击上方蓝色文字“后端技术小黑屋”,关注茄仁波切的公众号吧~



最近组内的小伙伴们被部门内的整个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的介绍,可以参阅官方文档 https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks


推荐阅读:

不要拷贝

使用双buffer无锁化

读写锁的性能一定更好吗


题图:KatiaInfographiste

授权:CC0协议



 
后端技术小黑屋 更多文章 潭江十里,梦回民国 推荐一本书 不要拷贝 广深不一样 使用双buffer无锁化
猜您喜欢 随机森林算法入门(python) 全面AI时代的路口,传统企业如何做到快速转身? InnoDB doublewrite与重做日志的关系 Android设计模式——访问者模式 快问快答(第一期)