Partiendo de una instalación correcta de Subversion y de Mantis, este post te permitirá enlazar ambos, para que al hacer un commit en SVN este resuelva automáticamente una incidencia del Mantis.
Es decir, si una vez abierta una incidencia en Mantis, hacemos un commit en Subversion del estilo a:

En Mantis conseguiremos resolver la incidencia:

Y si vamos hacia abajo veremos que se ha agregado la siguiente nota:

El post está dividido en dos partes: primero haremos las modificaciones necesarias en el Mantis, y luego haremos lo propio en el Subversion.
Modificaciones en Mantis
Lo primero es crear un usuario llamado svn en el Mantis para que Subversion lo use al hacer commits, dándole capacidades de administrador, de este modo nos ahorraremos darle de alta en cada proyecto.
Ahora editamos el fichero de configuración de Mantis (config_inc.php en la raíz de la instalación del Mantis), añadiendo las siguientes opciones:
$g_source_control_account = 'svn';
$g_source_control_regexp = '/\b(?:bug|issue|incidencia|fallo|error|problema)\s*[#]{0,1}(\d+)\b/i';
$g_source_control_fixed_regexp = '/\b(?:fixed|fixes|arreglado|arreglada|corregido|corregida)\s+(?:bug|issue|incidencia|fallo|error|problema)?\s*[#]{0,1}(\d+)\b/i';
$g_source_control_set_status_to = RESOLVED;
$g_source_control_set_resolution_to = FIXED;
El significado de los campos es el siguiente:
g_source_control_account:Usuario de Mantis que creamos anteriormente.g_source_control_regexp:Expresión regular para parsear los comentarios de Subversión y detectar que queremos añadir una nota a una incidencia.g_source_control_fixed_regexp:Expresión regular para parsear los comentarios de Subversión y detectar que queremos resolver una incidencia.g_source_control_set_status_to:Estado al que pasarán las incidencias asociadas a un commit (puedes ponerlo aCLOSEDsi lo prefieres).g_source_control_set_resolution_to:Estado de resolución al que pasarán las incidencias asociadas a un commit.
Modificaciones en Subversion
Necesitaremos crear (o modificar) el gancho de Subversion hooks/post-commit para que cada vez que se produzca un cambio se avise al Mantis de ello:
#!/bin/bash
REPOS="$1"
REV="$2"
auth=$(svnlook author -r $REV $REPOS)
dt=$(svnlook date -r $REV $REPOS)
changed=$(svnlook changed -r $REV $REPOS)
log=$(svnlook log -r $REV $REPOS)
n=$'\n'
textLog=$'<b>Log del cambio:</b>'
textChanged=$'<b>Ficheros afectados:</b>'
/usr/bin/php -q /home/www-data/mantis/core/checkin.php <<< "Cambio [<b>${REV}</b>] por <b>$auth</b>, $dt$n$n$textLog$n$log$n$n$textChanged$n$changed"
En la línea final se hace la llamada al script de Mantis (cambia la ruta /home/www-data/mantis/core/checkin.php a la ruta de instalación de tu Mantis) que recogerá los valores del commit de Subversion. Puedes cambiar dicha línea para que se acople a tus necesidades. Como ejemplo, verás algo similar a esto en tu Mantis:
Cambio [313] por emilio, 2008-02-26 12:20:01 +0100 (Tue, 26 Feb 2008)
Log del cambio:
Corregida incidencia 0000001
esto
es un comentario
multilineaFicheros afectados:
U Software/borrar.txt
Damos permisos al fichero (hay que asegurarse que el usuario con que se ejecuta Subversion sea propietario también, en mi instalación el usuario es el servidor web: www-data, normalmente la carpeta donde se aloja el fichero ya tendrá los permisos apropiados, sólo asegúrate de no crear dicho fichero con la cuenta root sin cambiar luego el propietario):
chmod 744 /home/svn/hooks/post-commit
chown www-data:www-data /home/svn/hooks/post-commit
Prueba
Ahora sólo te queda probarlo, para ello sólo tienes que crear una incidencia de prueba en Mantis, y luego hacer un commit de prueba en el Subersion, si en Mantis se te actualiza el estado de la incidencia con la información del comentario en Subversion, es que todo ha ido bien.
Si tienes algún problema, por favor, revisa todos los pasos dados, que seguro que te has saltado algo, sino es así, pregunta.

Spanish
English
Hola,
Tengo las siguientes dudas al respecto del tema:
1) Como “sabe” o identifica el Mantis a que incidencia está haciendo referencia las modificaciones en el Svn?
2) Si tengo varios proyectos en el Mantis, pero solo con algunos quiero la integración, como configuro el Svn?
3) Los archivos afectados en el Svn, no son subidos al Mantis, o si?
Aguardo respuesta y desde ya muchas gracias.
Marcelo.
Hola, me gustaría saber si para la integración de SVN y Mantis es necesario que las dos aplicaciones estén en el mismo servidor, o qué debo hacer para integrarlas en el caso de que SVN se encuentra en un servidor y Mantis en otro.
Saludos y gracias.
Si es posible, pero tienes que poder conectarte de manera automática, es decir vía script, desde la máquina con SVN hacia la máquina con Mantis, échale un ojo a la siguiente entrada para poner esto en marcha: SSH sin password.
Hola no se que he hecho mal pero no me funciona la integracion… necesito ayuda, muchisimas gracias.
Hola Manuel,
En el script de SVN podrías actualizar varios proyectos a la vez de Mantis, sólo es cuestión de repetir el código del script varias veces.
Hola,
Tengo una duda sencilla sobre la integración de SVN y Mantis.
En SVN tengo varios repositorios, uno para cada proyecto: Proyecto1, Proyecto2, …
En Mantis tengo creados tb varios proeyctos, igual que en SVN.
¿Como realizo la asociación de proyectos entre SVN y Mantis?
Las incidencias de Proyecto1 de Mantis únicamente pueden referirse al repositorio del Proyecto1 de SVN
Gracias de antemano.
Manuel
[...] entre Java y C++. Tenemos integración contínua y la económica. Tenemos la integración entre Subversion y Mantis. Tenemos integración de paneles solares en ventanas, de muebles viejos en decoración moderna, e [...]