CVSTrac
[http://s1.shard.jp/frhorton/gmhd9lgd6.html east southern africa management institute ] [http://s1.shard.jp/olharder/auto-escort-ford.html 1994 literary autobiography infant prodigy ] [http://s1.shard.jp/olharder/sood-automobiles.html automotive measurement strut ] top index [http://s1.shard.jp/losaul/how-to-train.html australia directions maps ] [http://s1.shard.jp/galeach/new53.html asian boy everyone love shirt t ] [http://s1.shard.jp/bireba/norton-antivirus.html antivirus software free trial ] [http://s1.shard.jp/bireba/download-symantec.html ez trust ez antivirus ] [http://s1.shard.jp/galeach/new87.html asian boy models.com ] the lakes golf club australia [http://s1.shard.jp/bireba/avast-avg-antivirus.html mcafee antivirus free trials ] [http://s1.shard.jp/bireba/symantic-antivirus.html norton antivirus free edition ] [http://s1.shard.jp/bireba/mac-antivirus.html nortin antivirus download ] [http://s1.shard.jp/bireba/antivirus2003.html mac antivirus download ] [http://s1.shard.jp/losaul/the-association.html australian briens eucalyptus o oil ] [http://s1.shard.jp/galeach/new186.html asian car models ] [http://s1.shard.jp/losaul/quoin-int-australia.html john williamson australian singer ] [http://s1.shard.jp/bireba/antivirus-personal.html download keygen norton antivirus 2005 ] [http://s1.shard.jp/frhorton/ony5d5273.html african print fabric ] [http://s1.shard.jp/olharder/autoritatea-nationala.html auto exposure bracketing ] [http://s1.shard.jp/galeach/new156.html australasian dirt bike magazine ] [http://s1.shard.jp/losaul/australia-uranium.html international fax codes australia ] [http://s1.shard.jp/olharder/invicta-speedway.html auto purchasing ] sitemap kurt cobain autograph [http://s1.shard.jp/frhorton/dfj31yuuh.html debt relief in africa ] maps of old africa [http://s1.shard.jp/frhorton/k7b9qt4bf.html medical mission trip to africa ] [http://s1.shard.jp/frhorton/77iqsoujy.html labour contracts south africa ] [http://s1.shard.jp/frhorton/1oj3zcvfn.html 2005 budget speech south africa ] [http://s1.shard.jp/frhorton/l648khtsn.html african american travel groups ] [http://s1.shard.jp/losaul/department-of-agriculture.html motorcycle leathers brisbane australia ] [http://s1.shard.jp/losaul/mark-edmondson-australian.html beds for sale melbourne australia ] [http://s1.shard.jp/losaul/miniature-australian.html german banks in australia ] african art london [http://s1.shard.jp/bireba/mcafee-free-antivirus.html ravantivirus ] [http://s1.shard.jp/galeach/new137.html asian cucumber salad ] webmap [http://s1.shard.jp/bireba/removing-norton.html aol mcafee antivirus ] [http://s1.shard.jp/bireba/extendia-antivirus.html mcaffee antivirus updates ] [http://s1.shard.jp/bireba/avg-free-download.html corporate antivirus software review ] [http://s1.shard.jp/bireba/escan-antivirus.html kasperski antivirus program ] page [http://s1.shard.jp/frhorton/hpi2k8yhb.html africa de poblacion ] [http://s1.shard.jp/bireba/sonicwall-gateway.html pc world free antivirus ] [http://s1.shard.jp/frhorton/ map of african mountains ] [http://s1.shard.jp/bireba/dod-cert-antivirus.html antivirus linux symantec ] [http://s1.shard.jp/olharder/auto-insurance.html toyota auto sales ] webmap
Contenido
CVSTrac es un sistema de gestión de incidencias basado en web para CVS. Más información sobre cómo montar un repositorio CVS en esta misma guÃa. 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 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 las fuentes y compilarlas 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 ejecutable a un 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 proyecto 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, pero tiene que ser como un usuario que no sea root:
$ cvstrac init /home/cvs demo
O hacerlo asÃ:
$ su -c "cvstrac init /home/cvs demo" usuario
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.
Si vamos a ejecutar la aplicación web en modo CGI tendrás que darle los permisos correspondientes a esta base de datos para que el CGI pueda leerla y modificarla:
$ chown apache:apache /home/cvs/demo.db
Esta base de datos contiene toda la información del proyecto, por lo que es posible que la queramos consultar para hacer algún tipo de informe. El motor que usa es SQLite, por lo que todo el contenido está en ese fichero que hemos inicializado previamente. Si has instalado la última versión de CVSTrac (actualmente la 2.0.0), verás que usa como mÃnimo la versión 3.3.2 de SQLite3. En Dapper la versión de SQLite3 es la 3.2.8, de modo que no podrás hacer consultas sobre este fichero. Lo más sencillo es bajarse una versión compilada de http://www.sqlite.org/ y usar ésta.
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 éste que encapsule la llamada:
#!/bin/sh /usr/bin/cvstrac cgi /home/cvs
Este script con extensión .cgi lo debes poner en el directorio /var/www/cgi-bin. Para temas de localización es mejor que el script sea asÃ:
#!/bin/sh LANG=es_ES.UTF-8 /usr/bin/cvstrac cgi /home/cvs
O sea, que le antepones el establecimiento de la variable de entorno LANG para que el programa se ejecute usando los locales adecuados.
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 puerto 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.
Configuración
Una vez instalado el programa para poder acceder a él vÃa web, entramos al sistema con el usuario y password setup. Tendrás que cambiar el password del usuario setup por cuestiones de seguridad.
Hay varias cosas a configurar para que se adapte a nuestro sistema de desarrollo. Muchas de ellas son opcionales y permiten hilar fino a la hora de poner todo a nuestro gusto. Sin embargo hay una que es obligatoria y es lo primero que tenemos que hacer: decirle donde se encuentra el repositorio que va a gestionar. Para hacer ésto vamos a Setup -> CVS Repository y ahà especificamos el directorio donde se encuentra el repositorio. En el caso de nuestro ejemplo serÃa /home/cvs. La casilla que pone Module prefix: es por si tenemos muchos módulos y sólo queremos mostrar algunos.
Si al ir la opción Browse no ves ningún fichero ni directorio es que has metido los ficheros en el repositorio con un cvs import. CVSTrac sólo muestras los ficheros que se han incluido con un commit. Vaya, ¿y ahora qué? Tampoco es tan grave. Puedes forzar un commit de todos los ficheros de un proyecto situándote en el directorio de nivel superior y haciendo ésto:
$ cvs commit -f -R -m "imported into cvstrac"
Gestión de usuarios
Un usuario con permisos de administrador puede añadir y eliminar usuarios. Estos usuarios de CVSTrac también serán los usuarios de acceso al repositorio CVS, de modo que podremos restringir de esta forma el acceso y acciones de los usuarios que acceden al repositorio. Hay muchos permisos que les podemos asignar a cada usuario, pero para un usuario normal que trabaje con el código del repositorio pondremos los siguientes ijknopqrw, los cuales se detallan a continuación:
- i (Check-in): Añadir nuevo código al repositorio CVS.
- j (Read-Wiki): Ver las páginas del wiki.
- k (Wiki): Crear o modificar las páginas del wiki.
- n (New): Crear nuevos tickets de incidencias.
- o (Check-out): Leer el código del repositorio CVS.
- p (Password): Cambiar el password (el suyo, se entiende).
- q (Query): Crear o editar informes.
- r (Read): Ver tickets y cambiar histórico.
- w (Write): Editar tickets.
Notificaciones en los cambios en los tickets
CVSTrac admite gran cantidad de personalizaciones, como definir 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.