Enviando Mails via Hooks

El programa commit-email.pl puede ser usado como post-commit hook para enviar emails:
-bash-3.2$ uname -a
Linux banot.etsii.ull.es 2.6.18-164.15.1.el5 #1 SMP Wed Mar 17 11:37:14 EDT 2010 i686 i686 i386 GNU/Linux
-bash-3.2$ /usr/share/doc/subversion-1.4.2/tools/hook-scripts/commit-email.pl                            
/usr/share/doc/subversion-1.4.2/tools/hook-scripts/commit-email.pl: too few arguments.                   
usage (commit mode):                                                                                     
  /usr/share/doc/subversion-1.4.2/tools/hook-scripts/commit-email.pl REPOS REVNUM [[-m regex] [options] [email_addr ...]] ...
usage: (revprop-change mode):                                                                                                
  /usr/share/doc/subversion-1.4.2/tools/hook-scripts/commit-email.pl --revprop-change REPOS REVNUM USER PROPNAME [-d diff_file] \
    [[-m regex] [options] [email_addr ...]] ...
options are:
  --from email_address  Email address for 'From:' (overrides -h)
  -h hostname           Hostname to append to author for 'From:'
  -l logfile            Append mail contents to this log file
  -m regex              Regular expression to match committed path
  -r email_address      Email address for 'Reply-To:'
  -s subject_prefix     Subject line prefix
  --diff y|n            Include diff in message (default: y)
                        (applies to commit mode only)

This script supports a single repository with multiple projects,
where each project receives email only for actions that affect that
project.  A project is identified by using the -m command line
option with a regular expression argument.  If the given revision
contains modifications to a path that matches the regular
expression, then the action applies to the project.

Any of the following -h, -l, -r, -s and --diff command line options
and following email addresses are associated with this project.  The
next -m resets the -h, -l, -r, -s and --diff command line options
and the list of email addresses.

To support a single project conveniently, the script initializes
itself with an implicit -m . rule that matches any modifications
to the repository.  Therefore, to use the script for a single-
project repository, just use the other command line options and
a list of email addresses on the command line.  If you do not want
a rule that matches the entire repository, then use -m with a
regular expression before any other command line options or email

'revprop-change' mode:
The message will contain a copy of the diff_file if it is provided,
otherwise a copy of the (assumed to be new) property value.

Estos son los contenidos del ejecutable post-commit en el subdirectorio hooks:

-bash-3.2$ uname -a
Linux banot.etsii.ull.es 2.6.18-164.15.1.el5 #1 SMP Wed Mar 17 11:37:14 EDT 2010 i686 i686 i386 GNU/Linux
bash-3.2$ pwd
-bash-3.2$ ls -ltra post-commit
-rwxr-xr-x 1 casiano apache 280 abr 20 14:08 post-commit
-bash-3.2$ cat post-commit

/usr/share/doc/subversion-1.4.2/tools/hook-scripts/commit-email.pl "$REPOS" "$REV" --from 'aluXXX@ull.es' -r  'aluXXX@ull.es' 'aluXXX@gmail.com'
Supongamos que modificamos nuestra copia de trabajo y hacemos un commit:
pp2@nereida:~/src/perl/subversion/banotnewrepproject2$ svn info
Ruta: .
URL: svn+ssh://banot/home/casiano/newrepository/project2/trunk
Raíz del repositorio: svn+ssh://banot/home/casiano/newrepository
UUID del repositorio: faf63038-71ca-4861-8080-6a701f9d687f
Revisión: 11
Tipo de nodo: directorio
Agendado: normal
Autor del último cambio: casiano
Revisión del último cambio: 11
Fecha de último cambio: 2010-04-20 09:17:16 +0100 (mar 20 de abr de 2010)

pp2@nereida:~/src/perl/subversion/banotnewrepproject2$ vi Makefile.PL
pp2@nereida:~/src/perl/subversion/banotnewrepproject2$ svn commit -m 'checking post-commit'
Enviando       Makefile.PL
Transmitiendo contenido de archivos .
Commit de la revisión 20.
Ahora en nuestra cuenta de correo tenemos un mensaje:
from        aluXXX@ull.es
reply-to    aluXXX@ull.es
to          aluXXX@gmail.com
date        20 April 2010 14:09
subject     r20 - project2/trunk
mailed-by   ull.es
hide details 14:09 (21 minutes ago)
Author: aluXXX
Date: 2010-04-20 14:09:35 +0100 (Tue, 20 Apr 2010)
New Revision: 20

checking post-commit

Modified: project2/trunk/Makefile.PL
--- project2/trunk/Makefile.PL  2010-04-20 08:32:45 UTC (rev 19)
+++ project2/trunk/Makefile.PL  2010-04-20 13:09:35 UTC (rev 20)
@@ -1,11 +1,4 @@
 use ExtUtils::MakeMaker;
    NAME              => 'project2',
    VERSION_FROM      => 'lib/project2.pm', # finds $VERSION

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.