当前位置:网站首页>Implementation of commit message standardized control in large projects
Implementation of commit message standardized control in large projects
2022-06-28 07:23:00 【Web front end lizhijie】
Why is it right git commit Standardize .
Git Every time code is submitted , Write everything Commit message( Submit instructions ), Otherwise, submission is not allowed .
git commit -m "hello world"
Code above -m Parameters , It's used to designate commit mesage Of .
If one line is not enough , You can only execute git commit, Will jump out of the text editor , Let you write multiple lines .
git commit
Basically , You can write anything .
however , Generally speaking ,commit message It should be clear , State the purpose of this submission .
at present , There are many kinds of communities Commit message The writing standard of , More popular or Angular standard .
format Commit message The benefits of .
1、 Can provide more historical information , Easy and quick browsing git log --pretty=format:"%an - %s".
2、 It can filter some commit( For example, new functions ), Easy to find information quickly git log --grep feat.
3、 Using tools conventional-changelog Can be directly from commit Generate Change log.
One 、 Realization Commit Message format
Install... In the project commitizen And commitizen Scaffold tools .
npm install -D commitizen cz-customizable
Global installation commitizen, This way commitizen The commands provided are in package.json Generate corresponding configuration contents in the file .
npm install -g commitizen
then , In the project catalog , Run the following command , To support Angular Of Commit message Format .
commitizen init cz-conventional-changelog --save --save-exact
Change the configuration to the following .
// package.json
// ……
"config": {
"commitizen": {
"path": "node_modules/cz-customizable"
},
"cz-customizable": {
"config": "cz-config.js"
}
}
// ……
newly build cz-config.js, You can use the following code , Also refer to official examples :
cz-customizable/cz-config-EXAMPLE.js at master · leoforfree/cz-customizable · GitHub
module.exports = {
types: [
{
value: 'feat', name: 'feat: Develop new features .' },
{
value: 'fix', name: 'fix: Repair bug, Note in the footnote bug Number .' },
{
value: 'docs', name: 'docs: Document revision .' },
{
value: 'style', name: 'style: Formatting code or does not have any effect .' },
{
value: 'refactor',
name: 'refactor: Neither repair bug Code changes that do not add features '
},
{
value: 'perf', name: 'perf: Code changes to improve performance .' },
{
value: 'test', name: 'test: Add missing tests .' },
{
value: 'chore', name: 'chore: Changes to the build process or auxiliary tools and Libraries .' },
{
value: 'revert', name: 'revert: Revert to commit .' },
{
value: 'WIP', name: 'WIP: In progress .' }
],
messages: {
type: "Select the type of change that you're committing:",
scope: '\nDenote the SCOPE of this change (optional):',
customScope: 'Denote the SCOPE of this change:',
subject: 'Write a SHORT, IMPERATIVE tense description of the change:\n',
body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',
breaking: 'List any BREAKING CHANGES (optional):\n',
footer:
'List any ISSUES CLOSED by this change (optional). E.g.: #31, #34:\n',
confirmCommit: 'Are you sure you want to proceed with the commit above?'
},
allowCustomScopes: true,
skipQuestions: ['body'],
subjectLimit: 100
}
in the future , All use git commit command , Use... Instead git cz. And then shell Select the corresponding information in the form of command interaction to generate Commit message.
Two 、 verification Commit Message Whether the format meets the requirements
The version commit command can be used either git commit You can also use the new git cz command , according to git cz The prompt of the interactive command can be easily generated to conform to Commit message Submission request that meets the format requirements , Of course, you can continue to use git commit For version submission , But we will prevent non-compliance Commit message Submission request that meets the format requirements .
therefore , Next we need to pass git hooks Medium commit-msg coordination commitlint Realize the mismatch Commit message Intercept the submission request that meets the format requirements .
First install... In the project commitlint Related tools .
npm install --save-dev @commitlint/config-conventional @commitlint/cli
Execute the following command in the root directory , Generate commitlint The configuration file .
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
modify commitlint.config.js file , Add corresponding rule .
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'chore', 'revert', 'WIP']],
'subject-case': [0],
},
};
3、 ... and 、 Block those that do not meet the format requirements Commit
install git hooks Management tools husky, And generate corresponding files .
Relevant configuration files and contents can be referred to huskyGitHub Warehouse related configuration .
GitHub - typicode/husky: Git hooks made easy woof!
npm install husky --save-dev
npx husky install
add to commit-msghooks file .
npx husky add .husky/commit-msg
And write the following .
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no -- commitlint --edit ${1}
Four 、 Format the code according to the coding specification while submitting the code
lint-staged coordination git hooks You can format the code before it is submitted . But I need EsLint And Prettier And other coding specification related tools .
npm install --save-dev lint-staged
stay package.json Add the following to the document .
If it is Vue project , We can change the formatting tool to vue-cli-service, Or other formatter .
The formatted program should be added to the cache , Therefore, it should also be implemented in the end git add.
// package.json
// ……
"lint-staged": {
"src/**/*.{js,ts,tsx,vue,css,scss}": [
"npm run lint",
"npm run format",
"git add"
]
},
// ……
newly added git hooks file pre-commit.
npx husky add .husky/pre-commit
And write the following .
#!/usr/bin/env sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
So far, we have realized , When code submission is made, the Commit Message Format verification and coding specification verification and repair .
Reference article :
Commit message and Change log Write a guide - Ruan Yifeng's Weblog
GitHub - ht1131589588/commitlint-cli: a cli for create commitlint at program
GitHub - typicode/husky: Git hooks made easy woof!
5、 ... and 、 All previous contents have been included in the column :
git special column _WEB Front end Li Zhijie's blog -CSDN Blog
Flutter special column _WEB Front end Li Zhijie's blog -CSDN Blog
Vue special column _WEB Front end Li Zhijie's blog -CSDN Blog
边栏推荐
- Jetpack - defects of livedata component and Countermeasures
- Libuv framework echo server C source code explanation (TCP part)
- Mysql8.0和Mysql5.0访问jdbc连接
- kubelet垃圾(退出的容器和未使用的镜像)回收源码分析
- Kubernetes deploys a secret pit where thanos ruler sends repeated alarms
- Principle and practice of bytecode reference detection
- R language ggmap
- Compile configuration in file
- LeetCode+ 51 - 55 回溯、动态规划专题
- C language tutorial
猜你喜欢

Introduction and several months' experience of extending the solution thanos of Prometheus

一个小工具可以更快的写爬虫

BACnet/IP网关如何采集楼宇集中控制系统数据

LeetCode+ 51 - 55 回溯、动态规划专题

PLC -- 笔记

Reinforcement learning - grid world

ABAP 技能树

网传互联网公司加班表,排名第一的没悬念

Practice of traffic recording and playback in vivo

Voice network VQA: make the user's subjective experience of unknown video quality in real-time interaction known
随机推荐
[C#][转载]furion框架地址和教程地址
自动化测试的生命周期是什么?
vite2.9 中指定路径别名
linux下修改mysql用户名root
SQL statement optimization steps (1)
金山云团队分享 | 5000字读懂Presto如何与Alluxio搭配
Yesterday, I went to a large factory for an interview and asked me to do four arithmetic operations. Fortunately, I am smart enough
okcc呼叫中心没有电脑的坐席能不能开展工作?
LLVM 与 Clang
Makefile
R 语言 Kolmogorov-Smirnov 检验 2 个样本是否遵循相同的分布。
R 和 rgl 绘制 3D 结
Pfizer's new Guankou medicine has entered the Chinese market, and the listing of relevant products of domestic pharmaceutical enterprises is just around the corner
The practice of traffic and data isolation in vivo Reviews
C language tutorial
Source code analysis of kubernetes' process of deleting pod
Principle and practice of bytecode reference detection
Is it safe to open a stock trading account on your mobile phone?
Techo day Tencent technology open day, June 28 online waiting for you!
Llvm and clang