How to capture a git commit message in commit-msg hook?

Я написал скрипт

#!/bin/bash
commit_msg=$1
echo "Your commit message: $commit_msg"

в hooks/commit-msg which validates the commit message in

git commit -m "fixed a bug"

But when I run the hook, I have:

Your commit message: .git/COMMIT_EDITMSG

вместо

Your commit message: fixed a bug

How can I capture the commit message into a variable?

I've read How to capture a git commit message and run an action but it didn't help me because that hook was for post-receive и мне это нужно для commit-msg so I don't have my commit message in

git log -1 HEAD --pretty=format:%s

because my hook blocks from doing a commit.

1 ответ

Из документов:

Хук commit-msg принимает один параметр, который снова является путем к временному файлу, который содержит сообщение о фиксации, написанное разработчиком.

Поэтому вам необходимо прочитать содержимое данного файла, чтобы предоставить сообщение:

commit_msg=$(cat "${1:?Missing commit message file}")
Другие вопросы по тегам