分享撸一个git branch name 校验工具的过程
Git分支校验工具
最近想规范团队的项目分支命名,在github上找了个遍,也没找到合适的。因此花了一天时间自己撸一个,目前已在公司的项目中使用,先奉上项目地址:validate-branch-name 果你喜也喜欢这个项目,欢迎使用和star
准备工作
功能需求
- 校验规则可自定义,且方式一定要便捷
- Push时触发,且校验失败是要阻止当前提交
- 需要方便与CI结合
实现思路
实现的思路其实是比较简单的,参考下面的流程图:
- 分支名校验使用正则进行校验,正则表达式用户可自定义,同时也提供了默认的正则。
- 配置的定义可通过配置文件和package.json等方式,项目中使用cosmiconfig进行全局配置搜索。
- Git Hook触发校验操作,因此使用了Husky定义了pre-push hook,在git push前就进行了分支名的校验。
使用方式
在你的项目package.json中定义hook和校验规则,“validate-branch-name" 这个参数是可选的,项目为你提供了默认的配置,当然你也可以自定义
// {app_root}/package.json
{
"husky": {
"hooks": {
"pre-push": "validate-branch-name"
}
},
"validate-branch-name": {
"pattern": "^(master|develop){1}$|^(feature|fix|hotfix|release)\/.+$",
"errorMsg": "your own error message"
}
}
默认的pattern: ^(master|develop){1}$|^(feature|fix|hotfix|release)/.+$ 例如: feature/test/pattern-test这样的分支名就可以通过校验 其它的patterns有:
- ^(feature|fix|hotfix|release)/.+ - branch has to start with feature/, fix/, release/ or hotfix/
- (feature|release|hotfix)/(JIRA-\d+) - it should look like feature/JIRA-1234
- (feature|release|hotfix)/(JIRA-\d+/)?[a-z-]+ - it should look like feature/branch-name or include JIRA’s code like feature/JIRA-1234/branch-name
你也可以通过.validate-branch-namerc
, .validate-branch-namerc.json
or .validate-branch-name.js
等文件自定义配置.
总结
这个工具虽然很轻,但是提供了很便捷的自定义及使用途径,对规范化团队的开发流程还是有很大帮助的。最后,如果你也喜欢这个项目,欢迎Star