2009-04-29 14 views
22

Encontré un gancho post-recepción para Git después de buscar en Google que uso para enviar por correo electrónico todas las confirmaciones a un repositorio remoto/compartido.Git: gancho de correo electrónico posterior a la recepción, incluidos los parches de diferenciación?

El problema con este post-receive hook es que solo tiene la capacidad de indicar quién hizo la confirmación, el mensaje de registro, la fecha o los archivos afectados. También quiero ver los archivos afectados que se han generado parches en el correo electrónico para ver qué cambios se realizaron en el código. Subversion hace esto bastante bien.

¿Alguien tiene una solución para quizás una variable env que se puede pasar al gancho de post-recepción que hace esto? O mejor aún, ¿un ejemplo que ya está cocinado?

¡Gracias a todos!

Respuesta

21

reciente versión Git debe instalar un script post-receive-email. En él, se dice:

hooks.showrev

El comando shell utilizado para dar formato a cada revisión en el correo electrónico, con "% s" reemplazado con el identificador de comprometerse. El valor predeterminado es "git rev-list -1 --pretty% s", que muestra el identificador de confirmación, el autor, la fecha y el mensaje de registro . Para listar parches completos separados por una línea en blanco, podría establecer esto como "git show -C% s; echo".

Así que simplemente configure hooks.showrev para "git show -C% s; echo "en el repositorio con el gancho de correo electrónico y ya está todo listo.

+0

Bombe, he intentado configurar lo siguiente en la línea de comando sin suerte. # git config --global hooks.showrev "git show -C% s; echo" –

+0

No importa, no puedes agregarlo a --global, tiene que ser solo git config, de lo contrario tu solución es ¡Bien, gracias! –

+0

No tuve problemas para configurar todos los valores de configuración necesarios en la configuración global. – Bombe

1

No lo he usado por un tiempo, pero (creo) el one I used to use está en línea. Tomé lo que solía enviar con git y lo reorganicé más para mi gusto. No he intentado ejecutar nada similar en mucho tiempo.

Tengo algunas capturas de pantalla de lo que hizo:

+0

Hola Dustin. ¿Tiene alguna modificación que hizo que el resultado fuera similar al de las capturas de pantalla anteriores? –

+0

Estoy bastante seguro de que eso es lo que significa el enlace esencial en mi primera oración. Si no, entonces no. :( – Dustin

1

Consulte esta sección.

echo "" 
echo "Summary of changes:" 
git diff-tree --stat --summary --find-copies-harder $oldrev..$newrev 

Aquí se le pide a git la diferencia, pero también se le pide que la resuma. Elimina los indicadores --stat y --summary y verás la diferencia.

git diff-tree --find-copies-harder $oldrev..$newrev 

Aquí es otra forma en que muestra todas las revisiones incluidas las diferenciaciones de $ OLDREV a $ newrev

git --no-pager log --find-copies-harder $oldrev..$newrev 
+0

Hola robin. Probé las dos modificaciones anteriores y aún no obtengo la salida de diff. –

+0

Correcto, olvidé la opción "-p" en ambas versiones. – robinr

2

que tenían problemas similares aquí:

Git hook to send email notification on repo changes

En realidad hay diferentes versiones del guión post-recibir-mail - la que está disponible en git.kernel.org informa sobre aspectos y hooks.showrev, el que yo no tenía.

Pero esta discusión es genial, gracias, definitivamente la veré! La otra secuencia de comandos vinculada anteriormente también tiene la función de enlace gitweb y esas cosas, ¿cómo le va a otros?

Cuestiones relacionadas