一、背景

Git每次提交代码都需要写commit message,一般来说,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作等。但是在日常开发中,开发者提交的的commit message千奇百怪,中英文混合使用,这就导致后续代码维护成本特别大,有时自己都不知道自己的fix bug修改的是什么问题。基于以上这些问题,我们希望通过某种方式来监控用户的git commit message,让规范更好的服务于质量,提高大家的研发效率。

二、约定

所有项目的Commit Log的格式精确控制,增加可读性,便于查看变更历史,形成良好的git使用习惯。规范作为git hook的commit-msg和pre-receive执行,不合法无法提交。全面执行后可自动化执行以下操作:

三、Commit Log Format

Commit Log包含三部分header、body、footer,其中header是必须的,格式固定,body在变更有必要详细解释时使用。

commit log 格式:

注意:冒号后面必须有一个小写空格,types和scopes可为多个,中间用逗号分隔。

举例

1. 仅header:
2. 仅header,涉及模块较多用*代替
3. 有header和body
4. 有header、body、footer

1、Type

英文,小写。必须为下列中一个或多个:

2、Scope

英文,小写。表示变更的包或模块范围,可多个组合,若涉及范围较大,可用 * 代替。各服务可以自行定义,组内同学可轻易理解。通用scope列表如下:

3、Subject

中文。标题简述修改,结尾不要有句号。

4、Body

中文。修改的背景(为什么做这次修改),说明修改逻辑。

5、Footer

中文。可以放置需求wiki或task链接,对以后其他同学blame很有用。

四、规范校验

1、commit log正则表达式(持续集成工具会用到):

Java代码块

2、本地卡控

3、全局卡控配置

4. CI 卡控

.gitlab-ci.yml:

commit-msg.sh

© CopyRight ccb.today All Rights Reserved. 蜀ICP备18008136号-2