получить сообщение коммита в git hook - PullRequest
22 голосов
/ 22 марта 2011

Я хотел бы проверить сообщение коммита перед коммитом git. Для этого я использую ловушку pre-commit, но не смог найти способ получить сообщение commit в скрипте .git / pre-commit. Как я мог получить это?

Ответы [ 4 ]

26 голосов
/ 22 марта 2011

В хуке pre-commit сообщение о фиксации обычно еще не было создано ¹.Вы, вероятно, хотите использовать вместо этого один из prepare-commit-msg или commit-msg хуков.В Pro Git есть хороший раздел о порядке запуска этих хуков и о том, что вы обычно можете с ними делать.

¹ Исключение составляет то, чтокоммиттер, возможно, предоставил сообщение фиксации с -m, но сообщение все еще недоступно для ловушки pre-commit, тогда как оно prepare-commit-msg или commit-msg

6 голосов
/ 08 июня 2017

Я реализовал это в хуке commit-msg. См. документацию .

commit-msg
This hook is invoked by git commit, and can be bypassed with the --no-verify option. 
It takes a single parameter, the name of the file that holds the proposed commit log message. 
Exiting with a non-zero status causes the git commit to abort.

Под my_git_project/.git/hooks я добавил этот файл commit.msg (должно быть это имя). Я добавил следующее содержимое bash в этот файл, который сделал проверку.

#!/usr/bin/env bash
INPUT_FILE=$1
START_LINE=`head -n1 $INPUT_FILE`
PATTERN="^(MYPROJ)-[[:digit:]]+: "
if ! [[ "$START_LINE" =~ $PATTERN ]]; then
  echo "Bad commit message, see example: MYPROJ-123: commit message"
  exit 1
fi
1 голос
/ 18 июля 2018

Имя крючка должно быть:

commit-msg, иначе он не будет вызван:

0 голосов
/ 29 августа 2012

Вы можете сделать следующее в pre-receive хуке (для серверной части), и это отобразит информацию о ревизии.

old, new, branch = sys.stdin.read().split()
proc = subprocess.Popen(["git", "rev-list", "--oneline","--first-parent" , "%s..%s" %(old, new)], stdout=subprocess.PIPE)
commitMessage=str(proc.stdout.readlines()[0])  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...