赞
踩
git blame
时可以快速明白代码用意;采用三段式,v版本.里程碑.序号,如v1.2.1
具体操作,可参见:Git标签、Git基础-打标签
版本正式发布后,需要生产changelog文档,便于后续问题追溯。
message信息格式采用目前主流的Angular规范,这是目前使用最广的写法,比较合理和系统化,并且有配套的工具。
Commit message一般包括三部分:Header、Body 和 Footer。
type(scope):subject
对本次commit的详细描述,可分多行
Commitizen 是一个主流的 Commit message 的生成工具,支持 Angular 的 commit message格式,被众多主流框架采用。
$ npm install -g commitizen
安装完成后,需要在项目目录下,输入以下命令来初始化您的项目以使用 cz-conventional-changelog 适配器
$ commitizen init cz-conventional-changelog --save --save-exact
上述命令会干3件事情:
- "config": {
- "commitizen": {
- "path": "./node_modules/cz-conventional-changelog"
- }
- }
然后使用git cz
代替git commit
命令即可,或者可以增加友好的 npm 命令,通过npm run commit
进行提交!
- "script": {
- "commit": "git-cz"
- }
也可以本地安装:
$ npm install --save-dev commitizen
使用项目内的本地
- $ ./node_modules/.bin/commitizen init cz-conventional-changelog --save-dev --save-exact
- $ ./node_modules/.bin/git-cz
cz-conventional-changelog 可以自动根据提交信息生成change log,便于统一管理和查阅!
$ npm install -g conventional-changelog-cli
进入项目执行
- # 在之前生成的基础上,叠加
- $ conventional-changelog -p angular -i CHANGELOG.md -s
- # 生成所有记录,包括之前的
- $ conventional-changelog -p angular -i CHANGELOG.md -s -r 0
同样可以创建npm脚本,来更方便的操作
- "scripts": {
- "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md"
- }
采用Git hooks来拦截提交信息,进行格式判断。这里使用commit-msg
钩子,该钩子接收一个参数(存有当前提交信息的临时文件的路径)。如果该钩子脚本以非0退出,Git将放弃提交。
yorkie用于执行git-hooks,首先在package.json中增加相关配置
$ npm i --D yorkie
- "gitHooks": {
- "commit-msg": "node git-hooks/verify-commit-msg.js"
- }
verify-commit-msg.js
- const chalk = require('chalk')
- const msgPath = process.env.GIT_PARAMS
- const msg = require('fs').readFileSync(msgPath, 'utf-8').trim()
-
- const commitRE = /^(revert: )?(feat|fix|polish|docs|style|refactor|perf|test|workflow|ci|chore|types|build)((.+))?: .{1,50}/
-
- if (!commitRE.test(msg)) {
- console.error(
- ` ${chalk.bgRed.white(' ERROR ')} ${chalk.red(`invalid commit message format.`)}nn` +
- chalk.red(` Proper commit message format is required for automated changelog generation. Examples:nn`) +
- ` ${chalk.green(`feat(compiler): add 'comments' option`)}n` +
- ` ${chalk.green(`fix(v-model): handle events on blur (close #28)`)}nn` +
- chalk.red(` You can also use ${chalk.cyan(`npm run commit`)} to interactively generate a commit message.n`)
- )
- process.exit(1)
- }
参考地址:自定义Git-Git钩子
欢迎关注 「 Super 前端 」微信公众号
版权声明:
本文原创自我的博客:李刚的学习专栏
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。