Как мне сделать так, чтобы письма от git post-receive отправлялись автором коммита?
Я использую скрипт post-receive-email, включенный в git. (Источник здесь.) Он работает просто отлично, но я хочу, чтобы каждое электронное письмо отправлялось автором коммитов. Как мне это сделать?
Мой файл после получения в настоящее время выглядит следующим образом, и я хочу настроить адрес электронной почты от.
#!/bin/sh
export USER_EMAIL=from-email-address@blah.com
$(dirname $0)/post-receive-email
3 ответа
использование git log
вытащить адрес электронной почты.
Например, в post-receive
:
#!/bin/sh
# Use the email address of the author of the last commit.
export USER_EMAIL=$(git log -1 --format=format:%ae HEAD)
$(dirname $0)/post-receive-email
Вы также можете сопоставить адреса электронной почты, если, например, люди используют свои адреса электронной почты или личного домена, но вы хотите сопоставить их с одним доменом.
#!/bin/sh
# Use the mapped email address (specified in .mailmap) of the author of the last commit.
export USER_EMAIL=$(git log -1 --format=format:%aE HEAD)
$(dirname $0)/post-receive-email
Вы можете прочитать больше о .mailmap
здесь
Вы можете попробовать другую систему хуков, например http://github.com/jtek/git-hook-update-notify-email
Для правильной обработки коммитов, сделанных на ветках (используемых в системе Debian), может быть лучше:
#! /bin/sh
git config hooks.envelopesender $(git log -all -1 --pretty=format:%ae)
. /usr/share/git-core/contrib/hooks/post-receive-email
git log --all
вместо git log HEAD
будет использовать последний коммит во всех ветках, предположительно тот, о котором нужно уведомить.
git config hooks.envelopesender
может быть заменен другим из упомянутых выше вариантов. YMMV.