【iOS】gitcommitmessage规范调研主要参考:
commit message规范
<type>(<scope>): <subject>//<;类型>[可选的作⽤域]: <;描述>
<BLANK LINE>
<body> //[可选的正⽂]
<BLANK LINE>
<footer> //[可选的脚注]
提交注释的规范,不仅仅适⽤于git的版本管理。
commit message分为三部分:
1.Header
包括三个字段:type(必需)、scope(可选)和subject(必需)。
pe
type⽤于说明commit的类别,使⽤下⾯这些标识
feat 新功能
fix bug修复
improvement 对当前功能的改进
docs ⽂档的修改
style 不影响代码内容的修改(格式修改,⽐如空格、分号、缩紧)
refactor 重构
perf 提⾼性能的代码修改
test 添加测试或修正现有的测试
build 构造⼯具或者外部依赖的改动
ci CI配置⽂件和脚本的改动(example scopes: Travis, Circle, BrowserStack, SauceLab?)
chore 不修改src或者test的其他修改
revert 回滚先前提交
1.2.scope
angular安装scope⽤于说明 commit 影响的范围,这⾥定义的⽅式⽐较多样,在落地实现中作具体说明。
1.3.subject
subject是 commit ⽬的的简短描述,作为必填项应该简要描述“(我)做了什么”
2.Body
Body 部分是对本次 commit 的详细描述。可以描述的内容⽐如:
代码变动的时机
改动之前的情况
修改的动机
与改动相关的说明
等等
3.Footer
Footer⼀般⽤于以下两种情况:
breaking change:破坏性的修改,即当前代码与上⼀个版本不兼容。应该记录变动的描述、变动的理由和迁移⽅法
close issue:关闭issue。当前commit针对某个issue,可以在Footer部分关闭这个issue
以上皆为Angular规范下的提交注释结构,在项⽬的落地实现中,⼀般基本保留上述提交注释的结构,但在诸如type标识、scope定义、Body内容等细节⽅⾯会有诸多⾃定义规范的制定。
commitizen环境配置
commitizen是⼀个在git撰写符合上述规范的commit message的辅助⼯具,⽤于代替git commit指令。
以下为在 macOS Mojave10.14.6 环境下的安装步骤(已安装Xcode)
1.安装homebrew
如果有homebrew/npm环境跳过此步
2.安装npm。
如果有npm环境跳过此步。
brew install node
3mitizen安装
npm install -g commitizen cz-conventional-changelog
这⼀⾏指令同时安装了cz-conventional-changelog适配器。
commitizen需要配置⼀种适配器才能⼯作。基于不同需求,也可以使⽤不同适配器。
以配置cz-conventional-changelog适配器为例:
全局配置的⽅法:
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
即在⽬录 ~/下创建⽂件.czrc并且编辑内容"{ "path": "cz-conventional-changelog" }"
项⽬配置的⽅法:
commitizen init cz-conventional-changelog --save --save-exact
在项⽬⽬录下运⾏上⾯的命令(没测试过)
4.测试
在git仓库内调⽤git cz指令看是否成功安装。如果想进⼊正常的提交逻辑,⼯程需要有未提交的修改。
5.⾃定义的适配器(如果cz-conventional-changelog不能满⾜基本需求)
5.1 安装cz-customizable适配器
npm install -g cz-customizable
5.2 全局配置依然是通过⽂件~/.czrc配置。⽂本内容:
"path": "cz-customizable"
5.3 在⽬录 /home下创建⽂件.cz-config.js。配置⽅式可以参考node_modules/cz-customizable/cz-config-EXAMPLE.js 配置的内容为git cz时的message、tips等
5.4 如果想要进⼀步配置,可以直接修改node_modules/cz-customizable/下的questions.js和buildCommit.js
6mitlint和husky
这两者弥补了commitizen⽆法对commit message内容进⾏校验的缺陷。
conventional-changelog标准
cz-conventional-changelog适配器提供标准(约定式提交标准)
基本符合commit message规范
落地实现对⽐
以公司项⽬为例,使⽤git log在命令⾏输出。(更直观的应该是在github上查看提交记录)
旧commit message
commit f398587c0bbe72e81efa4c2a410eaad425982aa4
Author: zhihong.liao <zhihong.liao@...>
Date: Tue Feb 18 09:53:16 2020 +0000
GPGameLoginManager接⼝errMsg调整
git-svn-id: http:/...
commit e2b022298620c1efc74a6a2d358a57fae68a41c3
Author: zhihong.liao <zhihong.liao@...>
Date: Mon Feb 17 09:44:13 2020 +0000
根据设计需求修改果币卡cell样式
git-svn-id: ...
新commit message
commit f1319e192b105fd05b75e10479979291f4a6e424
Author: zhihong.liao <zhihong.liao@...>
Date: Fri Feb 28 08:56:01 2020 +0000
fix(project.pbxproj等): 同步⼯程⽂件/提测问题修复同步
主要解决问题:强制关闭⿊暗模式;重复刷新导致桥接失败;更新版本号
git-svn-id: ...
commit 5fe9d9967f900edeff56ac06a9dce544f0e07c1f
Author: zhihong.liao <zhihong.liao@...>
Date: Fri Feb 28 08:55:59 2020 +0000
feat(实名认证业务相关): 实名认证-》防沉迷系统;新增“防沉迷系统详情”逻辑
实名认证改动主要影响:实名认证改为防沉迷系统,弹窗/账号页进⼊防沉迷系统,都会添加防沉迷系统详情按钮,点击拉取H5页⾯
git-svn-id: ...
依托项⽬的使⽤体会
使⽤cz-conventional-changelog适配器就能满⾜基本的开发需求
常⽤的type为feat/fix/style
scope我⼀般使⽤⽂件名中间部分作为标识(⽐如产品前缀+功能名词+类别名的命名⽅式下,使⽤功能名词作标识,以求能快速定位到特定⽂件)有时也会直接使⽤功能名作为标识
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论