2

在 lerna/yarn monorepo 中,我们使用commitizencz-conventional-changelog管理发布。我们使用huskylint 钩子中的提交消息并在commit-msg钩子中运行 commitizen cli prepare-commit-msg

  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
      "pre-commit": "lint-staged",
      "prepare-commit-msg": "exec < /dev/tty && yarn commit --hook || true"
    }
  },

只要不需要变基就可以正常工作,但是,当我们的团队仍在学习绳索时,我们经常需要变基功能分支以修复提交消息。

git rebase --interactive origin/master

在运行 rebase 时,如果我选择reword命令,我将能够在我的编辑器中编辑提交消息,但 commitizen cli 不会运行,换句话说,没有什么可以阻止我们提交错误的提交消息。

虽然我们在 CI 中执行 lint 提交消息,但我更愿意通过在所有阶段强制使用 commitizen CLI 向导来完全避免这个问题。

问题:

我可以配置 git在 rebase操作prepare-commit-msg期间使用钩子吗?reword

4

1 回答 1

0

git rebase运行pre-rebasepost-rewrite钩子。我怀疑它运行任何其他钩子。

我认为您可以git rebase --exec在每次重新提交后运行验证脚本。任何错误代码都会暂停 rebase 进程。

于 2019-08-21T11:43:28.663 回答