Как мне сделать так, чтобы письма от git post-receive отправлялись автором коммита? - PullRequest
2 голосов
/ 15 марта 2010

Я использую скрипт post-receive-email, включенный в git. (Источник здесь .) Он работает просто отлично, но я хочу, чтобы каждое электронное письмо отправлялось от автора отправленных коммитов. Как мне это сделать?

Мой файл пост-получения в настоящее время выглядит следующим образом, и я хочу настроить адрес электронной почты.

#!/bin/sh

export USER_EMAIL=from-email-address@blah.com
$(dirname $0)/post-receive-email

Ответы [ 3 ]

8 голосов
/ 15 марта 2010

Используйте 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 можно прочитать здесь .

1 голос
/ 25 февраля 2014

Следующее может быть лучше, чтобы правильно обрабатывать коммиты, сделанные на ветви (используется в системе 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.

1 голос
/ 15 марта 2010

Вы можете попробовать другую систему крючков, например http://github.com/jtek/git-hook-update-notify-email

...