Используйте git-hooks для определенных веток (с Husky и git-branch-is)

Я использую лайки и git-branch-is для git hooks. Ниже моего 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. Как я могу отключить git hooks для веток, которые начинались с "feature"
  2. Применяйте крючки только для мастеров и развивающих веток.
  3. Может ли это быть реализовано без использования скриптов bash?

1 ответ

У меня это работает. git-branch-is не нужно.

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

Использование if [ git-branch-is master]; then npm test; fi, Затем тест git-branch-is master возврат ошибочного (ненулевого) значения выхода не будет рассматриваться как сбой терминала хука.

Это может вызвать проблемы, если ловушка должна работать за пределами POSIX-совместимой оболочки.

Я проверяю, не является ли ветвь master или ветвь master, и тесты успешны.

"pre-push": "git-branch-is -r \"^((?!master).)*$\" || (git-branch-is master && npm test)"
Другие вопросы по тегам