对某些分支使用git-hooks(使用Husky和git-branch-is)

时间:2018-12-22 12:40:18

标签: git npm git-branch package.json husky

我将huskygit-branch-is用于git hook。在我的package.json下面

{
"scripts": {
    "test": "jest",
     ...
},
"husky": {
  "hooks": {
    "pre-commit": "git-branch-is master && npm test",
    "pre-push": "git-branch-is master && npm test"
 }
}

使用此选项从分支功能/ 802 提交时,我将收到以下错误消息

Error: Current branch is "feature/802", not "master". 

问题

  1. 如何禁用以“ feature”
  2. 开头的分支的git hooks
  3. 仅对 master develop 分支应用钩子。
  4. 不使用bash脚本就能实现吗?

3 个答案:

答案 0 :(得分:1)

使用if [ git-branch-is master]; then npm test; fi。然后,返回失败(非零)退出值的测试git-branch-is master将不被视为挂钩的终端失败。

如果挂钩需要在符合POSIX的外壳之外运行,这可能会引起问题。

答案 1 :(得分:0)

我检查分支不是主节点还是分支是主节点,并且测试成功。

"pre-push": "git-branch-is -r \"^((?!master).)*$\" || (git-branch-is master && npm test)"

答案 2 :(得分:0)

这对我有用。不需要git-branch-is

{
  "hooks": {
    "commit-msg": "if [[ $(git rev-parse --abbrev-ref HEAD) = develop ]]; then commitlint -E HUSKY_GIT_PARAMS; fi"
  }
}