Текущая версия Git не делает информацию --author
доступной для перехватчиков Git через переменные окружения, аргументы командной строки или stdin.Однако вместо того, чтобы требовать использования командной строки --author
, вы можете указать пользователям устанавливать переменные окружения GIT_AUTHOR_NAME
и GIT_AUTHOR_EMAIL
:
#!/bin/sh
AUTHORINFO=$(git var GIT_AUTHOR_IDENT) || exit 1
NAME=$(printf '%s\n' "${AUTHORINFO}" | sed -n 's/^\(.*\) <.*$/\1/p')
EMAIL=$(printf '%s\n' "${AUTHORINFO}" | sed -n 's/^.* <\(.*\)> .*$/\1/p')
[ "${NAME}" != root ] && [ "${EMAIL}" != "root@localhost" ] || {
cat <<EOF >&2
Please commit under your own name and email instead of "${NAME} <${EMAIL}>":
GIT_AUTHOR_NAME="Your Name" GIT_AUTHOR_EMAIL="your@email.com" git commit
EOF
exit 1
}
Как и аргумент --author
, эти средыпеременные контролируют автора коммита.Поскольку эти переменные среды находятся в среде Git, они также находятся в среде хука pre-commit
.И поскольку они находятся в среде хука pre-commit
, они передаются в git var GIT_AUTHOR_IDENT
, который использует их как git commit
.
К сожалению, установка этих переменных гораздо менее удобна, чем использование --author
.Я предлагаю связаться с разработчиками Git и попросить, чтобы они установили эти переменные среды (используя значение, переданное через --author
) перед запуском pre-commit
hook.