ihub-git-hooks
...大约 3 分钟
ihub-git-hooks
插件信息
ihub-git-hooks
插件用于配置GitHooks,可以为git
操作配置一些钩子命令,比如:在提交代码的时候可以做一些代码检查。- 通过修改git-hooks目录实现自定义hook命令(
git config core.hooksPath xxx
),不破坏原有hooks。
插件ID | 插件名称 | 插件类型 | 扩展名称 |
---|---|---|---|
pub.ihub.plugin.ihub-git-hooks | GitHooks插件 | Project [1] | iHubGitHooks |
提交信息检查
插件基于约定式提交规范提供了commit-msg
检查提交信息功能,详见功能,提交信息规范如下:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
插件提供一个检查任务commitCheck
,用于检查提交信息是否符合规范,使用如下:
#!/bin/bash
./gradlew commitCheck
也可以通过扩展属性配置,见示例
提示
IDEA环境下支持自动生成Conventional Commit
IDEA插件配置文件conventionalCommit.json
,并且完成自动配置
扩展属性
Extension | Description | Default | Ext[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")
}
Groovy
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"
))
}
Groovy
iHubGitHooks {
hooks = [
'pre-commit': './gradlew build',
'commit-msg': './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")
}
Groovy
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'
}