Come faccio a fare git post-ricevere messaggi di posta elettronica inviati da parte dell'autore commettere?
-
20-09-2019 - |
Domanda
Sto usando lo script di post-ricevere-mail incluso con git. (Fonte è qui .) Funziona bene, ma voglio ogni email da inviare da parte dell'autore dei commit spinto. Come posso fare?
Il mio file post-ricezione attualmente appare così, e voglio personalizzare il da-indirizzo e-mail.
#!/bin/sh
export USER_EMAIL=from-email-address@blah.com
$(dirname $0)/post-receive-email
Soluzione
Usa git log
per tirare fuori l'indirizzo di posta elettronica.
Per esempio, in 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
Si potrebbe anche mappare gli indirizzi e-mail, se per esempio, le persone stanno usando i loro indirizzi Gmail o di dominio personale, ma che si desidera mappare a un singolo dominio.
#!/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
Si può leggere di più su .mailmap
qui .
Altri suggerimenti
Si può provare con un altro sistema di aggancio come http://github.com/ jtek / git-hook-update-notify-mail
Di seguito può essere meglio, per gestire correttamente commit fatta su rami (utilizzati su un sistema Debian):
#! /bin/sh
git config hooks.envelopesender $(git log -all -1 --pretty=format:%ae)
. /usr/share/git-core/contrib/hooks/post-receive-email
Il git log --all
invece di git log HEAD
userà l'ultima
impegnarsi su tutti i rami, presumibilmente quella giusta per informare circa.
Il git config hooks.envelopesender
può essere sostituito da un altro dei
le varianti di cui sopra. YMMV.