Diferencia entre revisiones de «CVSTrac»
(notificación de ticket) |
|||
Línea 11: | Línea 11: | ||
* Puede gestionar los usuarios y permisos del repositorio CVS. | * Puede gestionar los usuarios y permisos del repositorio CVS. | ||
− | == | + | == Obtener el ejecutable == |
En la página del proyecto [http://www.cvstrac.org/cvstrac/wiki?p=DownloadCvstrac http://www.cvstrac.org/] puedes bajar la última versión. A día de hoy es la 2.0, la cual trae muchas mejoras sobre la 1.2.1 que es la que ha estado vigente durante bastante tiempo. Tienes la posibilidad de bajar los fuentes y compilarlos o bajar un binario compilado para SuSE que funcionará perfectamente en Dapper. Después de bajártelo, lo renombras y le das permisos de ejecución: | En la página del proyecto [http://www.cvstrac.org/cvstrac/wiki?p=DownloadCvstrac http://www.cvstrac.org/] puedes bajar la última versión. A día de hoy es la 2.0, la cual trae muchas mejoras sobre la 1.2.1 que es la que ha estado vigente durante bastante tiempo. Tienes la posibilidad de bajar los fuentes y compilarlos o bajar un binario compilado para SuSE que funcionará perfectamente en Dapper. Después de bajártelo, lo renombras y le das permisos de ejecución: | ||
Línea 73: | Línea 73: | ||
Estará a la escucha en el purto TCP 8008. Ten en cuenta que tienes que ejecutar ''cvstrac'' en el '''CVSROOT''' del proyecto CVS, por ejemplo ''/home/cvs/CVSROOT''. Debe existir un directorio con el mismo nombre del proyecto en el mismo nivel. | Estará a la escucha en el purto TCP 8008. Ten en cuenta que tienes que ejecutar ''cvstrac'' en el '''CVSROOT''' del proyecto CVS, por ejemplo ''/home/cvs/CVSROOT''. Debe existir un directorio con el mismo nombre del proyecto en el mismo nivel. | ||
+ | |||
+ | == Notificaciones en los cambios en los tickets == | ||
+ | CVSTrac admite gran cantidad de personalizaciones, como definit un programa externo que se ejecute cada vez que se crea o modifica un ticket. La opción está accesible en ''Setup'' -> ''Change Notification''. El script que nos va a realizar esta tarea es uno tan simple como: | ||
+ | |||
+ | echo '%d %r'|mail -s '[cvstrac] %p/%s/%t' '%A' | ||
+ | |||
+ | Buscando por ahí me he encontrado este otro más currado, pero no lo he probado: | ||
+ | |||
+ | <perl> | ||
+ | #!/usr/bin/perl | ||
+ | use MIME::Lite; | ||
+ | use POSIX; | ||
+ | use Getopt::Long; | ||
+ | |||
+ | Getopt::Long::Configure('bundling'); | ||
+ | |||
+ | if( @ARGV > 0 ) { | ||
+ | GetOptions( 'a|assigned=s' => \$gszAssignedMail, | ||
+ | 'n|name=s' => \$gszAssignedName, | ||
+ | 'c|contact=s' => \$gszContact, | ||
+ | 'd|description=s' => \$gszDescription, | ||
+ | 'i|ticket=s' => \$gszTicketNumber, | ||
+ | 'p|project=s' => \$gszProject, | ||
+ | 'r|remarks=s' => \$gszRemarks, | ||
+ | 's|status=s' => \$gszStatus, | ||
+ | 't|title=s' => \$gszTitle, | ||
+ | 'u|changed=s' => \$gszChanged, | ||
+ | 'o|originator=s' => \$gszOriginator, | ||
+ | 'y|type=s' => \$gszType ); | ||
+ | $gszTime = POSIX::strftime("%a, %m %d %H:%M", localtime); | ||
+ | |||
+ | $szBuffer = <<EOT; | ||
+ | <html> | ||
+ | <style> | ||
+ | BODY, P, TD, TH { background-color: white; font-size: 10px; | ||
+ | font-family: Arial, Helvetica, Sans-Serif; } | ||
+ | TH { text-align: left; font-size: 11px; background-color: #e0e0e0; } | ||
+ | PRE { font-family: Lucida Console, Monaco, Courier New, fixed; font-size: 10px; } | ||
+ | H1 { font-size: 18px; } | ||
+ | </style> | ||
+ | <body> | ||
+ | <h1>Ticket <a href="http://cvstrac/tktview?tn=$gszTicketNumber">#$gszTicketNumber</a> was updated by $gszChanged.</h1> | ||
+ | <table border=0 cellpadding=2 cellspacing=1 bgcolor="black" width="100%"> | ||
+ | <tr><th>Title:</th><td width="100%">$gszTitle</td></tr> | ||
+ | <tr><th>Type:</th><td>$gszType</td></tr> | ||
+ | <tr> | ||
+ | <th>Assigned to:</th> | ||
+ | <td> | ||
+ | <a href="mailto:$gszAssignedMail">$gszAssignedName</a> | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr><th>Status:</th><td>$gszStatus</td></tr> | ||
+ | <tr><th colspan=2>Description:</th></tr> | ||
+ | <tr><td colspan=2><pre>$gszDescription</pre></td></tr> | ||
+ | <tr><th colspan=2>Remarks:</th></tr> | ||
+ | <tr><td colspan=2><pre>$gszRemarks</pre></td></tr> | ||
+ | </table> | ||
+ | Generated by notify.pl at $gszTime<br> | ||
+ | <a href="http://cvstrac/tktview?tn=$gszTicketNumber">View Ticket</a> | ||
+ | </body> | ||
+ | </html> | ||
+ | EOT | ||
+ | |||
+ | $msg = new MIME::Lite | ||
+ | From => 'issue-tracker@my.domain.com.com', | ||
+ | To => $gszContact, | ||
+ | Cc => $gszAssignedMail, | ||
+ | Subject => "[$gszProject tracker] Ticket $gszTicketNumber updated by $gszChanged", | ||
+ | Type => "text/html", | ||
+ | Data => $szBuffer; | ||
+ | $msg->attr( 'content-type.charset' => "ISO-8859-1" ); | ||
+ | |||
+ | $msg->send( 'smtp', 'smart.host.my.domain.com'); | ||
+ | } | ||
+ | </perl> | ||
+ | |||
+ | En este caso la invocación del script sería: | ||
+ | |||
+ | /usr/local/bin/notify.pl -n '%a' -a '%A' -c '%c' -d '%d' -i '%n' -p '%p' -r '%r' \ | ||
+ | -s '%s' -t '%t' -u '%u' -y '%y' -o '%w' | ||
+ | |||
+ | La barra invertida ('''\''') es para poder ponerlo en dos líneas y mejorar la legibilidad. Cuando lo vaya a usar ponlo todo en una sola línea. | ||
== Más información == | == Más información == | ||
* http://www.cvstrac.org/ | * http://www.cvstrac.org/ | ||
* http://www.developingprogrammers.com/index.php/2005/12/15/cvstrac-and-trac-combined-tutorial/ | * http://www.developingprogrammers.com/index.php/2005/12/15/cvstrac-and-trac-combined-tutorial/ |
Revisión de 12:32 13 jul 2006
Contenido
CVSTrac es un sistema de gestión de incidencias basado en web para CVS. Se trata de una aplicación sencilla y potente con las siguientes características:
- El interfaz web es simple y funcional.
- Tiene un visualizador de repositorios CVS y un wiki integrados con el sistema de incidencias.
- Ejecutable puede funcionar como en modo CGI o incluso de forma autónoma ya que incluye un servidor web.
- Usa la base de datos SQLite, lo que permite escribir consultas complejas en SQL.
- Puede gestionar los usuarios y permisos del repositorio CVS.
Obtener el ejecutable
En la página del proyecto http://www.cvstrac.org/ puedes bajar la última versión. A día de hoy es la 2.0, la cual trae muchas mejoras sobre la 1.2.1 que es la que ha estado vigente durante bastante tiempo. Tienes la posibilidad de bajar los fuentes y compilarlos o bajar un binario compilado para SuSE que funcionará perfectamente en Dapper. Después de bajártelo, lo renombras y le das permisos de ejecución:
$ mv cvstrac-200-suse92-bin cvstrac $ chmod +x cvstrac
Ahora copia el ejcutable a lugar donde lo puedas encontrar cuando lo quieras ejecutar:
$ sudo cp cvstrac /usr/bin
Inicializando la base de datos
CVSTrac contiene su propio motor de base de datos SQL embebido, así que no necesita ningún sistema de RDBMS externo. La base de datos de un proyeto se almacena en un sólo fichero. El primer paso para usar CVSTrac es inicializar esta base de datos. Para ello ejecuta el siguiente comando:
$ cvstrac init /home/cvs demo
Cambia el argumento /home/cvs por el directorio donde quieras que esté la base de datos. Cambia el argumento demo por el nombre del proyecto CVS que gestionará CVSTrac. Con los parámetros actuales se crearía la base de datos llamada /home/cvs/demo.db.
Varias formas de instalación
Como hemos visto, tiene varias formas de funcionar. En todas las configuraciones vamos a suponer que el directorio del repositorio CVS se encuentra en /home/cvs y el programa estará accesible en el puerto 80 del servidor.
Usando inetd
Añade la siguiente línea al fichero /etc/inetd.conf:
80 stream tcp nowait.1000 cvs /usr/bin/cvstrac cvstrac http /home/cvs
Usando xinetd
Crea el fichero /etc/xinetd.d/cvstrac con el siguiente contenido:
service cvstrac { socket_type = stream wait = no user = cvs server = /usr/bin/cvstrac server_args = http /home/cvs }
Como un CGI
Para ejecutarlo como un CGI tiene que crear un script como este que encapsule la llamada:
#!/bin/sh /usr/bin/cvstrac cgi /home/cvs
Como un servidor web autónomo
Si quieres que use su propio servidor web, ejecuta la línea de comando siguiente:
$ cvstrac server 8008 /home/cvs
Estará a la escucha en el purto TCP 8008. Ten en cuenta que tienes que ejecutar cvstrac en el CVSROOT del proyecto CVS, por ejemplo /home/cvs/CVSROOT. Debe existir un directorio con el mismo nombre del proyecto en el mismo nivel.
Notificaciones en los cambios en los tickets
CVSTrac admite gran cantidad de personalizaciones, como definit un programa externo que se ejecute cada vez que se crea o modifica un ticket. La opción está accesible en Setup -> Change Notification. El script que nos va a realizar esta tarea es uno tan simple como:
echo '%d %r'|mail -s '[cvstrac] %p/%s/%t' '%A'
Buscando por ahí me he encontrado este otro más currado, pero no lo he probado:
<perl>
- !/usr/bin/perl
use MIME::Lite; use POSIX; use Getopt::Long;
Getopt::Long::Configure('bundling');
if( @ARGV > 0 ) {
GetOptions( 'a|assigned=s' => \$gszAssignedMail, 'n|name=s' => \$gszAssignedName, 'c|contact=s' => \$gszContact, 'd|description=s' => \$gszDescription, 'i|ticket=s' => \$gszTicketNumber, 'p|project=s' => \$gszProject, 'r|remarks=s' => \$gszRemarks, 's|status=s' => \$gszStatus, 't|title=s' => \$gszTitle, 'u|changed=s' => \$gszChanged, 'o|originator=s' => \$gszOriginator, 'y|type=s' => \$gszType );
$gszTime = POSIX::strftime("%a, %m %d %H:%M", localtime);
$szBuffer = <<EOT;
<html> <style> BODY, P, TD, TH { background-color: white; font-size: 10px;
font-family: Arial, Helvetica, Sans-Serif; }
TH { text-align: left; font-size: 11px; background-color: #e0e0e0; } PRE { font-family: Lucida Console, Monaco, Courier New, fixed; font-size: 10px; } H1 { font-size: 18px; } </style> <body>
Ticket <a href="http://cvstrac/tktview?tn=$gszTicketNumber">#$gszTicketNumber</a> was updated by $gszChanged.
Title: | $gszTitle |
---|---|
Type: | $gszType |
Assigned to: |
<a href="mailto:$gszAssignedMail">$gszAssignedName</a> |
Status: | $gszStatus |
Description: | |
$gszDescription | |
Remarks: | |
$gszRemarks |
Generated by notify.pl at $gszTime
<a href="http://cvstrac/tktview?tn=$gszTicketNumber">View Ticket</a>
</body>
</html>
EOT
$msg = new MIME::Lite
From => 'issue-tracker@my.domain.com.com', To => $gszContact, Cc => $gszAssignedMail, Subject => "[$gszProject tracker] Ticket $gszTicketNumber updated by $gszChanged", Type => "text/html", Data => $szBuffer;
$msg->attr( 'content-type.charset' => "ISO-8859-1" );
$msg->send( 'smtp', 'smart.host.my.domain.com'); } </perl>
En este caso la invocación del script sería:
/usr/local/bin/notify.pl -n '%a' -a '%A' -c '%c' -d '%d' -i '%n' -p '%p' -r '%r' \ -s '%s' -t '%t' -u '%u' -y '%y' -o '%w'
La barra invertida (\) es para poder ponerlo en dos líneas y mejorar la legibilidad. Cuando lo vaya a usar ponlo todo en una sola línea.