zoukankan      html  css  js  c++  java
  • git commit提交规范和规范校验

    一、目的

    在多人协作项目,如果代码风格统一、提交信息准确,那么在后期协作以及BUG处理时会更加方便。

    格式化的commit message有以下几个好处:

    1. 方便快速检索历史提交信息,只看行首即可知晓commit的目的

    git log HEAD --pretty=format:%s

    2. 可以过滤某些commit(比如文档更新),便于快速查找信息

    git log HEAD --pretty=format:%s --grep 新功能

    3. 可以直接从commit生成changelog,说明与上一版本发布的差异

    通过changelog,测试知晓本次变更修改范围

    二、格式

    每一次提交,信息都必须遵循commit信息格式,包含Header、Body、Footer三个部分。

     
    commit信息格式

    三、工具

    3.1 依赖安装

    # 安装所需依赖, changelog-sn至少2.x版本
    npm install -D changelog-sn standard-version
    

    3.2 配置commitlint和commitizen

    代码仓库根目录创建文件.commitlintrc.js.czconfigrc.js

    3.2.1 配置.commitlintrc.js内容
    module.exports = Object.assign({}, require('changelog-sn/lib/lint'), {
      rules: {
        'subject-empty': [2, 'never'],
        'type-empty': [2, 'never'],
        'scope-empty': [2, 'never'],
        'type-enum': [
          2,
          'always',
          [
            '新功能',
            '修复',
            '优化',
            '重构',
            '文档',
            'chore',
            'revert',
            'WIP',
            'docs',
            'build',
            'release'
          ]
        ]
      }
    })
    
    3.2.2 配置.czconfigrc.js
    module.exports = {
      types: [
        { value: '新功能', name: '新功能 : 新增加一个功能' },
        { value: '修复', name: '修复   : 一个 bug 修复' },
        { value: '优化', name: '优化   : 提升性能的代码更改' },
        { value: '重构', name: '重构   : 不涉及修复bug和新功能开发的代码更改' },
        { value: '文档', name: '文档   : 只有文档发生改变' },
        { value: 'chore', name: '构建   : 修改持续集成的配置文件和脚本' },
        { value: 'revert', name: '撤销   : 撤销一个历史提交' },
        { value: 'WIP', name: '待完成 : 研发中的提交备份' }
      ],
      messages: {
        type: '选择你提交的信息类型:',
        scope: '选择本次提交的改变所影响的范围?',
        customScope: '本次提交的改变所影响的范围?',
        subject: '写一个简短的变化描述,尽量包含主谓宾结构,杜绝简单的单词:
    ',
        body: '提供更详细的变更描述 (按 enter 跳过). 使用 "|" 换行:
    ',
        breaking: '列出所有的不兼容变更 (按 enter 跳过):
    ',
        footer: '列出此次改动解决的所有 issues (如:"#123, #234")(按 enter 跳过):
    ',
        confirmCommit: '确认提交以上内容信息?'
      },
      allowBreakingChanges: ['refactor', 'chore'],
      breakingPrefix: 'WARNING:',
      skipQuestions: ['body'],
      subjectLimit: 100,
      breaklineChar: '|',
      footerPrefix: 'CLOSED:'
    }
    
    3.2.3 配置package.json
    {
        "scripts": {
            "log": "changelog-sn -i CHANGELOG.md -s -r 2",
            "cz": "git add . && git cz"
        },
        "husky": {
            "hooks": {
                "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
            }
        },
        "config": {
            "commitizen": {
                "path": "./node_modules/cz-customizable"
            },
            "cz-customizable": {
                "config": "./.czconfigrc.js"
            }
        },
        "devDependencies": {
            "changelog-sn": "2.0.5"
        }
    }


    作者:逆黄
    链接:https://www.jianshu.com/p/d20ecbc66ae1
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    今天解决了一个很郁闷的问题!
    解决了安装golive后html文件图标显示错误的问题
    [转载]Asp.Net 2.0 发布问题
    使用 Visual Studio 2005 构建“WPFE”项目
    Ajax学习网址备忘录
    [原创首发]深圳博客问测系统正式发布啦!
    如何在用户控件里联动Dropdownlist
    [转载]在ASP.NET中值得注意的两个地方
    [转]Prototype 1.5 Ajax 使用教程
    1038 Recover the Smallest Number (30 分)(贪心)
  • 原文地址:https://www.cnblogs.com/linwenbin/p/13308654.html
Copyright © 2011-2022 走看看