Pregunta

Siempre he encontrado que los correos de registro (confirmación) son muy útiles para realizar un seguimiento del trabajo que otras personas están haciendo en la base de código/repositorio.¿Cómo configuro SVN para enviar por correo electrónico una lista de distribución en cada confirmación?

Estoy ejecutando clientes en Windows y el servidor Apache Subversion en Linux.Sin embargo, las respuestas a continuación para varias plataformas probablemente serán útiles para otras personas.

¿Fue útil?

Solución

tu usas el ganchos posteriores a la confirmación.Aquí está un guía.

Aquí hay un script de Ruby de muestra que envía un correo electrónico después de cada confirmación: confirmar-correo electrónico.rb

Otros consejos

Eche un vistazo al independiente Notificar subversión herramienta (¡Solo Windows!)¡Puede enviar correos electrónicos al confirmar y también mucho más!

Querrás familiarizarte con ganchos de repositorio, particularmente el gancho posterior a la confirmación.

1) Instale svnnotify en un servidor svn usando sudo apt-get

2) Utilice el enlace posterior a la confirmación de su repositorio (lea los enlaces posteriores a la confirmación en el sitio web de svn)

3) Abra el archivo de enlace posterior a la confirmación y pegue el siguiente código para enviar un correo electrónico mediante el servidor SMTP.Usar smtp es sencillo ya que no es necesario configurar sendmail.

4) Asegúrese de que después de \ (salto de línea) no tenga un espacio adicional.

#!/bin/sh

REPOS="$1"
REV="$2"
TO="xyz@yah.com" # who will receive the notifications
FROM="hello@goog.com" # what will be in "FROM" fields


 /usr/bin/svnnotify \

--repos-path "$REPOS" \
--revision "$REV" \
--to $TO \
--from $FROM \
--reply-to $FROM \
--smtp "YOUR.SMTP.MAIL.COM" \
--subject-prefix "[svn commit]" \
--attach-diff -a \
--header 'Message generated on Subversion Check-in.' \
--footer 'OpenSource Team. ' \
--svnlook "/usr/local/bin/svnlook" \
--handler HTML::ColorDiff # make diff pretty

Hay una pregunta relacionada aquí en ganchos posteriores a la confirmación.Personalmente, prefiero enviar un mensaje a algo de lo que pueda obtener una fuente RSS, ya que un correo electrónico por confirmación sobrecargaría mi bandeja de entrada con bastante rapidez.

Secundando @Matt Miller en canales RSS.

Hay una herramienta útil llamada WebSVN que ofrece canales RSS de cada repositorio y ramas/etiquetas/carpetas individuales con mensajes de confirmación completos.También es una excelente interfaz web para ver rápidamente historiales de archivos y confirmaciones/diferencias sin tener que ejecutar una actualización y abrir el editor de su elección.

Como alguien más dijo, 'qué plataforma'.En Windows he usado 'blat', que es un correo SMTP de línea de comando gratuito para hacer esto, junto con un archivo post-commit y otro archivo por lotes.

La confirmación posterior se ve así:(Simplemente llama a otro archivo por lotes)

 call d:\subversion\repos\rts\hooks\mail %1 %2

Y mail.bat se veía así:

copy d:\subversion\repos\RTS\hooks\Commitmsg.txt %temp%\commit.txt
copy d:\subversion\repos\RTS\hooks\subjbase.txt %temp%\subject.txt
svnlook info -r %2 %1 >> %temp%\commit.txt
echo Revision %2 >> %temp%\commit.txt
svnlook changed -r %2 %1 >> %temp%\commit.txt
svnlook author -r %2 %1 >> %temp%\subject.txt
c:\utils\blat %temp%\commit.txt -t <me@my.email.com> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <svn@my.email.com>" -noh2

El mayor problema al escribir ganchos SVN es que es posible que básicamente NO tengas ninguna configuración de entorno: no hay ruta exe, no hay ruta temporal, etc.Aunque tal vez eso haya mejorado en versiones SVN más recientes.

Podrías usar construir robot.Es una herramienta que puede tomar medidas arbitrarias cada vez que se produce un check-in.Es un sistema de integración continua con todas las funciones, pero si solo desea correos electrónicos, ciertamente puede manejarlo.Tiene complementos para una variedad de SCM, incluido SVN.

En el directorio "hooks" de su rama de subversión específica hay 9 archivos de plantilla para ayudarlo a comenzar.

Punto clave:subversion no ejecutará ninguno de los archivos hasta que se les cambie el nombre.Para que post-commit.tmpl se ejecute en Unix, cámbiele el nombre a "post-commit".En Windows, cámbiele el nombre a "post-commit.bat" o "post-commit.exe".La subversión no ejecute el archivo si se llama "post-commit.tmpl" o "post-commit.sh" o similar.

Además, asegúrese de que el archivo sea ejecutable por el mismo usuario que ejecuta Subversion.

Utilizo un script posterior a la confirmación similar a este uno.

Envía un bonito correo electrónico HTML.Lo actualicé donde resalta el código que se eliminó en rojo y resalta el código que se agregó en azul.

VisualSVN Server tiene un útil enlace de notificación por correo electrónico de confirmación VisualSVNServerHooks.exe.Admite diferencias de colores y puede enviar notificaciones de confirmación solo cuando la confirmación afecta cierta ruta del repositorio.

Ver "Configuración de notificaciones por correo electrónico en VisualSVN Server".

Lo hice en un servidor Linux en 3 pasos:

  1. Crear una lista de correo (svn-notify@xy.com) y agregue personas a la lista.

  2. Editar /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

    • to_addr = svn-notify@xy.com
    • from_addr = %(autor)s@xy.com
    • commit_subject_prefix =[XY-SVN]
  3. Añade esta línea a tu /path_to_your_svn/svn/hooks/post-commit archivo:
    /path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

¿Qué plataforma?

En Mac OS X lo he instalado msmtp y creó un script posterior a la confirmación bajo ganchos en el repositorio.Es necesario configurar un archivo .msmtprc para svn (o www) usuario.

REPOS="`echo $1 | sed 's/\/{root of repository}//g'` "
REV="$2"
MSG=`/usr/local/bin/svn log -v -r HEAD https://localhost$REPOS`

/usr/local/bin/msmtp {list of recipients} <<EOF
Subject: SVN-Commit $REPOS#$REV
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8Bit

$MSG
EOF

Hacer {root of repository} y {list of recipients} específico para sus necesidades.Tenga en cuenta que he usado UTF-8 porque tenemos algunos caracteres especiales aquí en Suecia (åäö).

Hay un ejemplo (grande) escrito en Perl incluido en el código fuente de Subversion (puede ser visto aquí).

También SVNMailer, que funciona en Linux.

Comprobar el svn-mod-correo electrónico paquete descrito aquí.El svn-mod-correo electrónico es una poderosa herramienta para la gestión de notificaciones por correo electrónico SVN que se entrega como un archivo Debian.Es fácil de instalar, configurar y usar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top