Git hook para enviar notificaciones por correo electrónico sobre cambios en el repositorio

101

¿Cómo configuro el gancho de Git apropiado para enviar un correo electrónico de resumen cada vez que se envía un conjunto de cambios al repositorio ascendente?

Cabeza
fuente
Para la actualización de la versión (nueva etiqueta) de cualquier repositorio de git, puede usar git-notifier.com para enviar notificaciones por correo electrónico (gratis) o notificaciones por SMS (de pago)
Scholtz

Respuestas:

94

Otra forma más moderna de hacer esto es con git-multimail , como lo sugiere Chords a continuación.


Así lo hizo en 2009.

Puede agregar algo como esto a su gancho posterior a la recepción en $ GITDIR / hooks, o usar el script en el directorio contrib de la fuente (disponible aquí)

mwalling
fuente
Si hago referencia a ese script en mis ganchos, ¿el script al que se hace referencia tiene que residir en el host ascendente o localmente?
Head
4
El host que está ejecutando el gancho, por lo que en el caso de una recepción posterior, el host ascendente (mientras que un gancho posterior a la confirmación necesitaría el script en el host en el que está ejecutando la confirmación).
mwalling
2
¡Ahhh, pero puedes aceptar la respuesta y ambos obtendrán más reputación!
Pat Notz
La parte que me atrapó fue establecer la lista de destinatarios. Finalmente me di cuenta de que necesitas usar git config: git config hooks.mailinglist "[email protected], [email protected]"
ewalk
4
Vale la pena señalar que el enlace en esta respuesta ya no se encuentra en desarrollo activo. En su lugar, utilice multimail , que se menciona en el archivo Léame.
Acordes
19

Aquí está la solución más simple que he encontrado:

1) Inicie sesión en su cuenta de gitHub en github.com

2) En la pestaña principal, haga clic en Configuración

3) Desde la navegación principal, elija Service Hooks

4) En Ganchos disponibles, elija Correo electrónico

5) Complete su dirección de correo electrónico en el campo Dirección

6) Marque la casilla de verificación Enviar del autor

7) Marque la casilla de verificación Activo

8) Haga clic en Actualizar configuración

Opcional: puede hacer clic en Test Hook para probar, verifique su bandeja de entrada y debería recibir un correo electrónico.

También hay imágenes realizadas según el proceso:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Y ahora para la gran final tengo la respuesta probada y aprobada a mi lado.

Cómo enviar correos electrónicos a TODOS los miembros del equipo de desarrollo, cuando los enlaces de servicio de gitHub-> Correo electrónico solo permiten como máximo 2 destinatarios} .

La respuesta es una combinación de Service Hook-> Email @ GitHub && grupos de Google

  1. Primero inicie sesión en su cuenta de Google
  2. Vaya a Grupos de Google y en la parte superior haga clic en Crear grupo
  3. Escriba el nombre del grupo, la dirección de correo electrónico del grupo (se copiará / pegará en el enlace de servicio de GitHub-> dirección de correo electrónico), la descripción del grupo
  4. Después de eso, presione el botón Crear en la parte superior, su nuevo grupo debería crearse ahora
  5. Después de eso, en el menú de la izquierda, presione Invitar miembros y escriba las direcciones de correo electrónico de sus compañeros de equipo
  6. Después de presionar Enviar invitaciones (cuando sus miembros aceptan la invitación), ahora son formalmente miembros de este grupo.
  7. En el menú de la izquierda, haga clic en Todos los miembros y marque la cuarta columna llamada Entrega , cada miembro del equipo debe tener la opción Todos los correos electrónicos .
  8. Después de eso, me gustaría darle crédito al Sr. Clement Escoffier y, por favor, siga sus pautas @ Clement Escoffier: envíe los compromisos de Github a un grupo de Google sobre cómo terminarlo. {Gracias Clement :)}
  9. Si el enlace no está disponible, aquí hay otro enlace a mi versión gDocs @ PDF de la guía de Clements
Matija
fuente
19
Esta es una solución de github. Nada en la pregunta me dice que el usuario está usando github. Sin embargo, parece que es una respuesta perfecta para una pregunta en github.
daramarak
3
Este servicio de correo electrónico dejará de estar disponible después de octubre de 2018. Por lo tanto, esta respuesta no es válida después de ese momento. developer.github.com/changes/…
Jeegar Patel
5

El notificador git de Robin Sommer también genera muy buenos resúmenes en el siguiente 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
fuente
4

¿La configuración de hooks.showrev no hace una diferencia distinguible? : - /

Conf de muestra:

# 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
fuente
Ah, resulta que la versión de git.kernel.org respetaba hooks.showrev, ¡pero el script de instalación de git predeterminado no lo hacía! ¡Simplemente reemplazó el script, chmod a + x y luego funciona! Sin embargo, todavía necesito comprender la sintaxis de showrev
HiQ CJ
Problemas similares al mostrar diferencias aquí: stackoverflow.com/questions/804601/…
HiQ CJ
1

Logré hacer esto, pero tuve que optar por usar el script contrib, no el otro script (perl) de Alexandre Julliard. Parece más elegante y más configurable, pero con postfix no tenía ningún comando de correo que aceptara "-s". Este es mi camino:

http://pastie.textmate.org/695323

Sería bueno mostrar más información, como el parche completo, el enlace de gitweb y el gráfico de confirmación también, pero este script solo puede hacer lo primero, si juego con hooks.showrev, parece.

De todos modos, ¡salud y gracias por las sugerencias!

HiQ CJ
fuente
0

No es exactamente una respuesta completa, ya que es específico de Github, pero si usa Github, es extremadamente fácil configurar "Service Hooks".
Para cada repositorio que desee monitorear, ingrese Configuración / Ganchos de servicio.
Hay muchas integraciones disponibles, como Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello y Email ...
Simplemente seleccione el correo electrónico y aliméntelo con una dirección de correo electrónico grupal.
Usamos las notificaciones por correo electrónico para sincronizar a nuestros desarrolladores.

Tal Weiss
fuente
0

Si usa GitLab, puede usar el servicio de proyecto 'Email-on-push' para esto, se puede encontrar en servicios en la configuración del proyecto.

Sytse Sijbrandij
fuente
0

Puede usar el compromiso previo:

#!/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 en pc:

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

Prueba:

echo "# some change" >> Gemfile && git commit -m 'some change' Gemfile
tomaszbak
fuente
0

En GitLab en tu repositorio:

  1. Haga clic en Configuración.
  2. Cuando la configuración se expande, verá Integraciones . Haz click en eso.

Se abre una nueva página Correos electrónicos en push

  1. Busque y seleccione Enviar desde confirmador .
  2. Además, ingrese los Destinatarios separados por comas ubicados en el último campo.

También hay una opción para Desactivar diferencias de código que excluye las diferencias de código posiblemente sensibles en el cuerpo de la notificación. Es opcional.

Para más detalles: haga clic aquí

Anil Shrestha
fuente