Как мне сделать так, чтобы письма от 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.

Другие вопросы по тегам