分享撸一个git branch name 校验工具的过程
发布于 3 个月前 作者 JsonMa 576 次浏览 来自 分享

Git分支校验工具

最近想规范团队的项目分支命名,在github上找了个遍,也没找到合适的。因此花了一天时间自己撸一个,目前已在公司的项目中使用,先奉上项目地址:validate-branch-name 果你喜也喜欢这个项目,欢迎使用和star

准备工作

功能需求

  • 校验规则可自定义,且方式一定要便捷
  • Push时触发,且校验失败是要阻止当前提交
  • 需要方便与CI结合

实现思路

实现的思路其实是比较简单的,参考下面的流程图: 屏幕快照 2019-08-14 20.41.11.png

  • 分支名校验使用正则进行校验,正则表达式用户可自定义,同时也提供了默认的正则。
  • 配置的定义可通过配置文件和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

回到顶部