2010-03-14 4 views
2

J'utilise le script post-receive-email fourni avec git. (La source est here.) Cela fonctionne très bien, mais je veux que chaque email soit envoyé par l'auteur des commits poussés. Comment fait-on ça?Comment puis-je envoyer des messages git post-réception à partir de l'auteur de la validation?

Mon fichier de post-réception ressemble à ceci, et je veux personnaliser l'adresse de courriel.

#!/bin/sh 

export [email protected] 
$(dirname $0)/post-receive-email 

Répondre

8

Utilisez git log pour retirer l'adresse e-mail.

Par exemple, dans 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 

Vous pouvez également mapper les adresses e-mail, si par exemple, les gens utilisent leurs adresses gmail ou du domaine personnel, mais vous souhaitez les associer à une seule domaine.

#!/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 

Vous pouvez en savoir plus sur .mailmaphere.

+0

sur git plus récent c'est git log -1 --pretty = format:% ae – 2ni

+1

et cela ne fonctionne pas pour les branches. Si quelqu'un s'engage dans une branche, l'auther sera toujours le dernier du maître. – 2ni

+0

Vous avez raison, j'ai le problème de branche que vous mentionnez. Savez-vous comment le réparer? Cela ne m'a jamais assez dérangé pour me pencher là-dessus. –

1

Ce qui suit peut-être mieux, pour gérer correctement commits sur branches (utilisé sur un système Debian):

#! /bin/sh 
git config hooks.envelopesender $(git log -all -1 --pretty=format:%ae) 
. /usr/share/git-core/contrib/hooks/post-receive-email 

Le git log --all au lieu de git log HEAD utilisera la dernière commettras sur toutes les branches, soi-disant la juste un à signaler. Le git config hooks.envelopesender peut être remplacé par un autre les variantes mentionnées ci-dessus. YMMV.

Questions connexes