CVSTrac
erboge arco d pau marty robbins broker car rental software bed chevy truck used high part performance volkswagen pedo teens daughter ganges memoir kid game warhammer solving for x and y algebra liver cleansing ho gender pregnancy selection female flashers weekend getaway ohio bay area carpet cleaning companies wild metal review lil kim how many licks music list mrsa staph infection 7.7 serial winavi cellular new phone verizon model sydney moon asimo run video either have java script turned sexy al neon pussy lickin minneapolis tribune keystone properties jumping horses dub remix wheels drug in inactive ingredient chilis restaurant plump atthedrivein music at home work jack raconteurs white john wayne insurance shore tractor trailer fred sherry canada phone book automobiles sun.bbs floor mats for trucks election sos.state.tx.us vehicle donation april mr clean pat wynn texas department of public safety tight dress never alone antifilter free iran jennifer lopez movies amanda white chappelles show episode 4 bearing australian real estate dexters laboratory philips magnavox remote control code linkin park music video deep purple. perihelion student discount adobe computer free high quality armitron health insurance portugal quote travel free christian ecards committees juno.com info 2005 malda ascites end stage liver disease james doohan death orgia cartoon nicole oring mattress cartridge inkjet refill fanta costume halloween girl cheap oakleys women drivers digital state maps danzel mp3 greek language movie star teen people pc phone number wwf wrestling figure pc trailer electrical plugs domain name registration and hosting windows media player 10 battery metallica tribute olivia saint free movie bci lower back pain adult web cam movie posters printed banners us playing card company printable skateboard norshore theatre duluth detailed map puerto rico free male gay porn beautiful older woman nursing degree open source application software shenandoah valley real estate i will follow u2 tab download morpheus four horsemen wrestling hammock stand swing pork loin recipe novaform mattress steamboat snowmobile tours timing belt ephedra extract safety door belle donne mature fine leather cat breed munchkin ultrasound procedures hostname michaels.com km0 renault scenic benzina auto km 0 bmw 530d touring titanium a black dot free online pac man game cherish kenya mombasa fast cars classic mustang part metal receptacle united isopropyl rubbing alcohol imetec - ferro da stiro con caldaia sexy mini skirt daily babe of the day shame kennesaw ga realtor alden school district opere di salvador dali lover ringtone secret katie jordan 7.2 serial tally warren buffett swat 4 when darkness falls relocation quotes hydrogen fuel cells florida truck accident attorneys cover newspaper sea kayak hawaii home for sale lesbian porn picture corvette car cover deloitte foto blue h700 headset motorola tooth wireless cheap gas getting your ex girlfriend back fur pie sharp fax refills chocolate coffee gourmet interest only home loan would i lie to you custom flame painting mature nudes low carb diet result dolce zuppa inglese 32d breasts frenkie hi nrg mc mario let me love you new york cruises amor real deoderant xp service pack 2 torrent jagdish chandra bose biography windstar cruises bus tours mdoc otis bad credit loans galleria tatuaggio bodacious tatas milo (catania) sleeper sofa love figli di toto cutugno credit card debt settlement home in castle rock colorado logan international airport boston ma day of the tentacle janice dickerson water vending machine buy fioricet line online medical coding training the night santa went crazy piano purchase fairfax county library up and down original pilipino music free lesbian sex video bachmann trains california cased gold gold image rush silver ideepthroat 5.0 download morpheus liercrice
Contenido
- 1 Obtener el ejecutable
- 2 Inicializando la base de datos
- 3 Varias formas de instalaciÃÂón
- 4 ConfiguraciÃÂón
- 5 GestiÃÂón de usuarios
- 6 Notificaciones en los cambios en los tickets
- 7 Ticket <a href="http://cvstrac/tktview?tn=$gszTicketNumber">#$gszTicketNumber</a> was updated by $gszChanged.
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.