首页 » 网站推广 » gitPHPcommit规范技巧_若何规范你的Git commit

gitPHPcommit规范技巧_若何规范你的Git commit

访客 2024-11-04 0

扫一扫用手机浏览

文章目录 [+]

Git每次提交代码都须要写commit message,否则就不许可提交。
一样平常来说,commit message该当清晰明了,解释本次提交的目的,详细做了什么操作……但是在日常开拓中,大家的commit message千奇百怪,中英文稠浊利用、fix bug等各种笼统的message司空见惯,这就导致后续代码掩护本钱特殊大,有时自己都不知道自己的fix bug修正的是什么问题。
基于以上这些问题,我们希望通过某种办法来监控用户的git commit message,让规范更好的做事于质量,提高大家的研发效率。

规范培植

gitPHPcommit规范技巧_若何规范你的Git commit

初期我们在互联网上搜索了大量有关git commit规范的资料,但只有Angular规范是目前利用最广的写法,比较合理和系统化,并且有配套的工具(IDEA就有插件支持这种写法)。
末了综合阿里巴巴高德舆图干系部门已有的规范总结出了一套git commit规范。

gitPHPcommit规范技巧_若何规范你的Git commit
(图片来自网络侵删)

commit message格式

<type>(<scope>): <subject>

type(必须)

用于解释git commit的种别,只许可利用下面的标识。

feat:新功能(feature)。

fix/to:修复bug,可以是QA创造的BUG,也可以是研发自己创造的BUG。

fix:产生diff并自动修复此问题。
适宜于一次提交直接修复问题

to:只产生diff不自动修复此问题。
适宜于多次提交。
终极修复问题提交时利用fix

docs:文档(documentation)。

style:格式(不影响代码运行的变动)。

refactor:重构(即不是新增功能,也不是修正bug的代码变动)。

perf:优化干系,比如提升性能、体验。

test:增加测试。

chore:构建过程或赞助工具的变动。

revert:回滚到上一个版本。

merge:代码合并。

sync:同步主线或分支的Bug。

scope(可选)

scope用于解释 commit 影响的范围,比如数据层、掌握层、视图层等等,视项目不同而不同。

例如在Angular,可以是location,browser,compile,compile,rootScope, ngHref,ngClick,ngView等。
如果你的修正影响了不止一个scope,你可以利用代替。

subject(必须)

subject是commit目的的简短描述,不超过50个字符。

建议利用中文(觉得中国人用中文描述问题能更清楚一些)。

结尾不加句号或其他标点符号。

根据以上规范git commit message将是如下的格式:

fix(DAO):用户查询短缺username属性 feat(Controller):用户查询接口开拓

以上便是我们梳理的git commit规范,那么我们这样规范git commit到底有哪些好处呢?

便于程序员对提交历史进行追溯,理解发生了什么情形。

一旦约束了commit message,意味着我们将慎重的进行每一次提交,不能再一股脑的把各种各样的改动都放在一个git commit里面,这样一来全体代码改动的历史也将更加清晰。

格式化的commit message才可以用于自动化输出Change log。

监控做事

常日提出一个规范之后,为了大家更好的实行规范,就须要进行一系列的拉通,比如分享给大家这种规范的优点、能带来什么收益等,在大家都认同的情形下最好有一些逼迫性的方法。
当然git commit规范也一样,前期我们分享完规范之后考虑从源头进行逼迫拦截,只要大家提交代码的commit message不符合规范,直接不能提交。
但由于代码仓库操作权限的问题,我们终极选择了利用webhook通过发送警告的形式进行监控,督匆匆大家按照规范实行代码提交。
除了监控git commit message的规范外,我们还加入了大代码量提交监控和删除文件监控,减少研发的代码误操作。

整体流程

做事注册:做事注册紧张完成代码库干系信息的添加。

重复校验:防止merge request再走一遍验证流程。

告警:对不符合规范以及大代码量提交、删除文件等操作发送告警。

DB:存项目信息和git commit信息便于后续统计commit message规范率。

webhook是浸染于代码库上的,用户提交git commit,push到仓库的时候就会触发webhook,webhook从用户的commit信息里面获取到commit message,校验其是否知足git commit规范,如果不知足就发送告警;如果知足规范,调用gitlab API获取提交的diff信息,验证提交代码量,验证是否有重命名文件和删除文件操作,如果存在以上操作还会发送告警,末了把所有记录都入库保存。

以上便是我们全体监控做事的干系内容,告警信息通过如下形式发送到对应的钉钉群里:

我们也有整体git commit的统计,统计个人的提交次数、不规范次数、不规范率等如下图:

未来思考

git hooks分为客户端hook和做事端hook。
客户端hook又分为pre-commit、prepare-commit-msg、commit-msg、post-commit等,紧张用于掌握客户端git的提交事情流。
用户可以在项目根目录的.git目录下面配置利用,也可以配置全局git template用于个人pc上的所有git项目利用。
做事端hook又分为pre-receive、post-receive、update,紧张在做事端接管提交工具时进行调用。

以上这种采取webhook的形式对git commit进行监控便是一种server真个hook,相称于post-receive。
这种办法并不能阻挡代码的提交,它只是通过告警的形式来约束用户的行为,但终极不规范的commit message还是被提交到了做事器,不利于后面change log的天生。
由于公司代码库权限问题,我们目前只能添加这种post-receive类型的webhook。
如大家有更高的代码库权限,可以采取server端pre-receive类型的webhook,直接谢毫不规范的git commit message。
只要git commit规范了,我们乃至可以考虑把代码和bug、需求关联等等。

当然这块我们也可以考虑客户真个pre-commit,pre-commit在git add提交之后,然后实行git commit时实行,脚本实行没错就连续提交,反之就会驳回。
客户端git hooks位于每个git项眼前的隐蔽文件.git中的hooks文件夹里。
我们可以通过修正这块的配置文件添加我们的规则校验,直接阻挡不规范message的提交,也可以通过客户端commit-msg类型的hook进行拦截,把不规范扼杀在抽芽之中。
修正每个git项眼前面.git目录中的hooks文件大家肯定以为摧残浪费蹂躏韶光,实在这里可以采取配置全局git template来完成。
但是这又会涉及到hooks配置文件同步的问题。
hooks配置文件在本地,如何让hooks配置文件的修正能同步到所有利用的项目又成为一个问题。
以是利用做事端hook还是客户端hook须要根据详细需求做适当的权衡。

git hook不只可以用来做规范限定,它还可以做更多故意义的事情。
一次git commit提交的信息量很大,有作者信息、代码库信息、commit等信息。
我们的监控做事就根据作者信息做了git commit的统计,这样不仅可以用来监控commit message的规范性,也可以用来监控大家的事情情形。
我们也可以把git commit和干系的bug关联起来,我们查看bug时就可以查看办理这个bug的代码修正,很有利于干系问题的追溯。
当然我们用同样的方法也可以把git commit和干系的需求关联起来,比如我们定义一种格式feat 786990(需求的ID),然后在git commit的时候按照这种格式提交,webhook就可以根据这种格式把需求和git commit进行关联,也可以用来追溯某个需求的代码量,当然这个例子不一定得当,但足以证明git hook功能之强大,可以给我们的流程规范带来很大的便利。

总结

编码规范、流程规范在软件开拓过程中是至关主要的,它可以使我们在开拓过程中少走很多弯路。
Git commit规范也是如此,确实也是很有必要的,险些不用费额外精力和韶光,但在之后查找问题的效率却很高。
作为一名程序员,我们更应看重代码和流程的规范性,永久不要在质量年夜将就。

原文地址:https://mp.weixin.qq.com/s/vzgST0ko-HZVkFFiSZ2xGg

标签:

相关文章

php转time技巧_PHP 5 DateTime 函数

Date/Time 函数许可您从 PHP 脚本运行的做事器上获取日期和韶光。您可以利用 Date/Time 函数通过不同的办法来格...

网站推广 2024-12-07 阅读0 评论0

withphpredis技巧_redis结合php

1.Redis扩展模块安装1. 先安装php的redis扩展,和memcached安装是一样的。首先可以去pecl.php.net...

网站推广 2024-12-07 阅读0 评论0