Git hook para enviar notificação por e-mail sobre mudanças no repo

101

Como configuro o gancho Git apropriado para enviar um e-mail de resumo sempre que um conjunto de alterações é enviado para o repositório upstream?

Cabeça
fonte
Para atualização de versão (novo rótulo) para qualquer repositório git, você pode usar git-notifier.com para enviar notificações por e-mail (grátis) ou notificações por SMS (pago)
Scholtz

Respostas:

94

Outra maneira mais moderna de fazer isso é com git-multimail , conforme sugerido pelos acordes abaixo.


É assim que você fez em 2009.

Você poderia adicionar algo como este para o seu post-receive gancho $ GITDIR / ganchos, ou usar o script no diretório contrib da fonte (disponível aqui)

mwalling
fonte
Se eu fizer referência a esse script em meus ganchos, o script referenciado deve residir no host upstream ou localmente?
Siga em
4
O host que está executando o gancho, portanto, no caso de um pós-recebimento, o host upstream (enquanto um gancho pós-commit precisaria do script no host no qual você está executando o commit).
mwalling de
2
Ahhh, mas você pode aceitar a resposta e ambos terão mais reputação!
Pat Notz
A parte que me pegou foi definir a lista de destinatários. Eu finalmente descobri que você precisa usar git config: git config hooks.mailinglist "[email protected], [email protected]"
ewalk
4
É importante notar que o link nesta resposta não está mais em desenvolvimento ativo. Em vez disso, use multimail , que é mencionado no readme.
Acordes de
19

Aqui está a solução mais simples que encontrei:

1) Faça login em sua conta gitHub em github.com

2) Na guia principal, clique em Configurações

3) Na navegação principal, escolha Ganchos de serviço

4) Dos Ganchos Disponíveis, escolha Email

5) Preencha seu e-mail no campo Endereço

6) Marque a caixa de seleção Enviar do autor

7) Marque a caixa de seleção Ativo

8) Clique em Atualizar configurações

Opcional: Você pode clicar no Gancho de Teste para testar, verifique sua caixa de entrada para receber e-mail.

Também existem imagens feitas de acordo com o processo:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

E agora, para a grande final , tenho a resposta que foi testada e aprovada ao meu lado.

Como enviar email para TODOS os membros da equipe de desenvolvimento, quando os Ganchos de Serviço-> Email do gitHub permitem no máximo 2 destinatários} .

A resposta é a combinação de Service Hook-> Email @ GitHub && Google groups

  1. Primeiro faça login em sua conta do Google
  2. Vá para Grupos do Google e no topo clique em Criar Grupo
  3. Digite o nome do grupo, endereço de e-mail do grupo (irá copiar / colar no GitHub Service Hook-> Endereço de e-mail), descrição do grupo
  4. Depois de clicar no botão Criar na parte superior, seu novo grupo deve ser criado agora
  5. Depois disso, no menu à esquerda, clique em Convidar membros e digite os endereços de e-mail dos seus companheiros de equipe
  6. Após clicar em Enviar convites (quando seus membros aceitarem o convite), eles agora são formalmente membros deste grupo
  7. No menu à esquerda clique em Todos os Integrantes e marque a 4ª coluna chamada Entrega , todo integrante da equipe deverá ter a opção Todos os Emails .
  8. Depois disso, gostaria de agradecer ao Sr. Clement Escoffier e seguir suas diretrizes @ Clement Escoffier :: Enviar compromissos do Github a um Grupo do Google sobre como concluí-lo. {Obrigado, Clemente :)}
  9. Se o link ficar indisponível, aqui está outro link para a minha versão gDocs @ PDF do guia Clements
Matija
fonte
19
Esta é uma solução github. Nada na pergunta me diz que o usuário está usando o github. Parece que é uma resposta perfeita para uma pergunta no github.
daramarak de
3
Este serviço de e-mail será descontinuado após outubro de 2018. Portanto, esta resposta não é válida depois desse ponto. developer.github.com/changes/…
Jeegar Patel
10

Esta é a minha maneira de enviar notificação por email aos usuários sempre que alguém enviar um push para o repositório.

Configurando Git Commit Email Notification

É baseado nos scripts de Andy Parkins. Eu mudo para SMTP usado para enviar e-mail. Claro, o SMTP do gmail também pode ser usado.

Eric
fonte
5

O git-notifier de Robin Sommer também gera resumos muito bons no seguinte formato:

Subject: [git/git-notifier] master: Adding www target to Makefile. (7dc1f95)

Repository : ssh://<removed>/git-notifier

On branch  : master

>---------------------------------------------------------------

commit 7dc1f95c97275618d5bde1aaf6760cd7ff6a6ef7
Author: Robin Sommer <[email protected]>
Date:   Sun Dec 19 20:21:38 2010 -0800

    Adding www target to Makefile.

>---------------------------------------------------------------

 Makefile |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index e184c66..9c9951b 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,8 @@ VERSION   = 0.1

 DISTFILES = git-notifier README COPYING

+WWW = $(HOME)/www/git-notifier
+
 all:

 dist:
@@ -13,3 +15,7 @@ dist:
    cp $(DISTFILES) git-notifier-$(VERSION)
    tar czvf git-notifier-$(VERSION).tgz git-notifier-$(VERSION)
    rm -rf git-notifier-$(VERSION)
+
+www: dist
+   rst2html.py README >$(WWW)/index.html
+   cp git-notifier-$(VERSION).tgz $(WWW)
mavam
fonte
4

definir hooks.showrev não está fazendo nenhuma diferença perceptível? : - /

Amostra de conf:

# less users/cj.git/config 
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
[hooks]
        mailinglist = [email protected]
        showrev = "git show -C %s; echo"
        emailprefix = "[sabu gitosis server] "
HiQ CJ
fonte
Ah, acontece que a versão git.kernel.org respeitava o hooks.showrev, mas o script de instalação padrão do git não! Acabei de substituir o script, chmod a + x e então funciona! Ainda preciso entender a sintaxe showrev
HiQ CJ
Problemas semelhantes ao mostrar diferenças aqui: stackoverflow.com/questions/804601/…
HiQ CJ
1

Consegui fazer isso, mas tive que optar por usar o script contrib, não o outro script (perl) de Alexandre Julliard. Parece mais sofisticado e configurável, mas com o postfix eu não tinha um comando de email que aceitasse "-s"? Aqui está o meu jeito:

http://pastie.textmate.org/695323

Seria bom mostrar mais algumas informações, como o patch completo, link gitweb e gráfico de commit também, mas este script só pode fazer o primeiro - se eu brincar com hooks.showrev, ao que parece.

Enfim, parabéns e obrigado pelas sugestões!

HiQ CJ
fonte
0

Não é exatamente uma resposta completa, pois é específico do Github, mas se você usar o Github, é extremamente fácil configurar "Ganchos de serviço".
Para cada repositório que você deseja monitorar, insira Configurações / Ganchos de serviço.
Existem muitas integrações disponíveis, como Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello e Email ....
Basta selecionar o e-mail e alimentá-lo com um endereço de e-mail de grupo.
Usamos as notificações por email para sincronizar nossos desenvolvedores.

Tal Weiss
fonte
0

Se você usar o GitLab, poderá usar o serviço de projeto 'Email-on-push' para isso. Ele pode ser encontrado em serviços nas configurações do projeto.

Sytse Sijbrandij
fonte
0

Você pode usar pré-confirmação:

#!/usr/bin/env ruby

require 'mail'

Mail.defaults do
  delivery_method :smtp,
    address: 'smtp.gmail.com',
    port: 587,
    user_name: '...',
    password: '...',
    authentication: 'plain',
    enable_starttls_auto: true
end

changes=`git diff --cached --unified=0 Gemfile Bowerfile`

unless changes.empty?
  Mail.deliver do
    from     '...'
    to       '...'
    subject  '[PROJECT] Plese confirm team can use libraries'
    body     changes
  end
end

Instalar:

cd project
cp pre-commit .git/hooks
chmod +x .git/hooks/pre-commit
gem install mail

Teste:

echo "# some change" >> Gemfile && git commit -m 'some change' Gemfile
Tomaszbak
fonte
0

No GitLab em seu repositório:

  1. Clique em Setting.
  2. Ao definir expande, você verá Integrações . Clique nisso.

Lá é aberta uma nova página Emails on push

  1. Localize e selecione Enviar do committer .
  2. Além disso, insira os Destinatários separados por vírgulas localizados no último campo.

Também existe uma opção para Desabilitar diffs de código que exclui diffs de código possivelmente sensíveis no corpo da notificação. Isso é opcional.

Para mais detalhes: Clique aqui

Anil Shrestha
fonte