Использовать ловушку git's prepare-commit-msg во время интерактивной перебазировки
В монорэпо lerna/yarn мы используем commitizen
а также cz-conventional-changelog
управлять релизами. Мы используем husky
фиксировать сообщения в commit-msg
подключи и запусти обязательство кли в 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
Во время выполнения ребаз, если я выберу reword
Команда, я смогу отредактировать сообщение коммита в моем редакторе, но коммитиз не будет запущен, другими словами, ничто не мешает нам фиксировать плохие коммит сообщения.
Несмотря на то, что мы делаем lint commit сообщения в CI, я бы предпочел вообще избежать этой проблемы, принудительно используя мастер CLI на всех этапах.
Вопрос:
Могу ли я настроить git для использования prepare-commit-msg
крюк во время перебазирования reword
операции?
1 ответ
git rebase
работает pre-rebase
а также post-rewrite
крючки. Я сомневаюсь, что это работает какие-либо другие крючки.
Я думаю, что вы можете использовать git rebase --exec
запускать скрипт проверки после каждого повторного принятия. Любой код ошибки приостанавливает процесс перебазирования.