跳至主要內容

ihub-git-hooks

Henry...大约 3 分钟

ihub-git-hooks

插件信息

  • ihub-git-hooks插件用于配置GitHooks,可以为git操作配置一些钩子命令,比如:在提交代码的时候可以做一些代码检查。
  • 通过修改git-hooks目录实现自定义hook命令(git config core.hooksPath xxx),不破坏原有hooks。
插件ID插件名称插件类型扩展名称
pub.ihub.plugin.ihub-git-hooksGitHooks插件Project[1]iHubGitHooks

提交信息检查

插件基于约定式提交open in new window规范提供了commit-msg检查提交信息功能,详见功能open in new window,提交信息规范如下:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

插件提供一个检查任务commitCheck,用于检查提交信息是否符合规范,使用如下:

#!/bin/bash
./gradlew commitCheck

也可以通过扩展属性配置,见示例

提示

IDEA环境下支持自动生成Conventional Commitopen in new windowIDEA插件配置文件conventionalCommit.json,并且完成自动配置

扩展属性

ExtensionDescriptionDefaultExt[2]Prj[3]Sys[4]Env[5]
hooksPath自定义hooks路径(优先级高)
hooks自定义hooks
descriptionRegex提交描述正则表达式/.{1,100}/

如果两个hooks属性都不配置,会使用默认hooks目录

DSL扩展配置支持如下

扩展方法扩展描述
types添加提交类型
type添加单个提交类型,可详细配置type扩展属性
footers添加注脚类型
footer添加单个注脚类型,可详细配置footer扩展属性

type扩展属性

扩展方法扩展描述
scopes添加作用域
scope添加单个作用域,可详细配置作用域description属性
requiredScope配置是否启用作用域检查,默认false
description提交类型描述

footer扩展属性

扩展方法扩展描述
required配置注脚是否必填,默认false
requiredWithType配置注脚是否在特定提交类型时必填
valueRegex注脚值正则校验
description注脚描述

插件安装

Kotlin
plugins {
    id("pub.ihub.plugin.ihub-git-hooks")
}

自定义hooks路径使用示例

配置自定义hooks路径,并在自定义路径下添加相关hooks配置

iHubGitHooks.hooksPath=.hooks

插件扩展配置使用示例

扩展配置git-hooks命令

相关hooks命令会配置在.gradle/pub.ihub.plugin.hooks目录下

Kotlin
iHubGitHooks {
    hooks.set(mapOf(
        "pre-commit" to "./gradlew build",
        "commit-msg" to "./gradlew commitCheck"
    ))
}

扩展配置提交信息检查

Kotlin
iHubGitHooks {
    // 添加提交类型
    types("type1", "type2", "type3")
    // 开启范围检查
    type("build").scopes("gradle").requiredScope(true)
    // Footer必填
    footer("Footer").required(true)
    // 提交类型是feat时Footer必填
    footer("Footer").requiredWithType("feat")
    // 注解值正则校验
    footer("Closes").valueRegex("\\d+")
    // 描述配置1
    type("type").scope("scope").description("Scope description")
    footer("Other").description("Other description")
}

  1. Project:项目类型插件,配置于build.gradle文件,类型说明详见open in new window ↩︎

  2. Ext(Extension):插件自定义扩展属性,配置于build.gradle文件,配置方式详见 ↩︎

  3. Prj(Project):项目属性,配置于gradle.properties文件,配置格式扩展名.属性名详见 ↩︎

  4. Sys(System):系统属性,如命令行传递的信息等,配置格式扩展名.属性名详见 ↩︎

  5. Env(Environment):环境变量属性,配置格式全部大写,多个单词,用_分隔详见 ↩︎