<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.guia-ubuntu.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://www.guia-ubuntu.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RoltrTrocd</id>
		<title>Guía Ubuntu - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://www.guia-ubuntu.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RoltrTrocd"/>
		<link rel="alternate" type="text/html" href="https://www.guia-ubuntu.com/index.php/Especial:Contribuciones/RoltrTrocd"/>
		<updated>2026-04-17T04:18:05Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.22.7</generator>

	<entry>
		<id>https://www.guia-ubuntu.com/index.php/CVSTrac</id>
		<title>CVSTrac</title>
		<link rel="alternate" type="text/html" href="https://www.guia-ubuntu.com/index.php/CVSTrac"/>
				<updated>2008-02-24T00:38:43Z</updated>
		
		<summary type="html">&lt;p&gt;RoltrTrocd: c4ttasitviro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;lialchicac&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
[[Imagen:Cvstrac-mainscn.jpg|thumb|right|CVSTrac es un gestor de repositorios CVS.]]&lt;br /&gt;
&lt;br /&gt;
CVSTrac es un sistema de gestiÃ³n de incidencias basado en web para [[:w:es:CVS|CVS]]. MÃ¡s informaciÃ³n sobre cÃ³mo montar un repositorio CVS en [[CVS|esta misma guÃ­a]]. Se trata de una aplicaciÃ³n sencilla y potente con las siguientes caracterÃ­sticas:&lt;br /&gt;
&lt;br /&gt;
* El interfaz web es simple y funcional.&lt;br /&gt;
* Tiene un visualizador de repositorios CVS y un wiki integrados con el sistema de incidencias.&lt;br /&gt;
* Ejecutable, puede funcionar en modo CGI o incluso de forma autÃ³noma ya que incluye un servidor web.&lt;br /&gt;
* Usa la base de datos SQLite, lo que permite escribir consultas complejas en SQL.&lt;br /&gt;
* Puede gestionar los usuarios y permisos del repositorio CVS.&lt;br /&gt;
&lt;br /&gt;
== Obtener el ejecutable ==&lt;br /&gt;
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 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv cvstrac-200-suse92-bin cvstrac&lt;br /&gt;
$ chmod +x cvstrac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora copia el ejecutable a un lugar donde lo puedas encontrar cuando lo quieras ejecutar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo cp cvstrac /usr/bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inicializando la base de datos ==&lt;br /&gt;
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'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cvstrac init /home/cvs demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O hacerlo asÃ­:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ su -c &amp;quot;cvstrac init /home/cvs demo&amp;quot; usuario&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 $ chown apache:apache /home/cvs/demo.db&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
{{Nota|Si has bajado la versiÃ³n compilada de CVSTrac te funcionarÃ¡ perfectamente porque viene compilado estÃ¡ticamente con la versiÃ³n correcta de SQLite3. Lo de bajarte el binario de SQLite3 actualizado es sÃ³lo para poder hacer consultas desde fuera del CVSTrac.}}&lt;br /&gt;
&lt;br /&gt;
== Varias formas de instalaciÃ³n ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Usando inetd ===&lt;br /&gt;
AÃ±ade la siguiente lÃ­nea al fichero ''/etc/inetd.conf'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
80 stream tcp nowait.1000 cvs /usr/bin/cvstrac cvstrac http /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usando xinetd ===&lt;br /&gt;
Crea el fichero '''/etc/xinetd.d/cvstrac''' con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   service cvstrac {&lt;br /&gt;
     socket_type = stream&lt;br /&gt;
     wait        = no&lt;br /&gt;
     user        = cvs&lt;br /&gt;
     server      = /usr/bin/cvstrac&lt;br /&gt;
     server_args = http /home/cvs&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como un CGI ===&lt;br /&gt;
Para ejecutarlo como un CGI tiene que crear un script como Ã©ste que encapsule la llamada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
/usr/bin/cvstrac cgi /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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Ã­:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
LANG=es_ES.UTF-8 /usr/bin/cvstrac cgi /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O sea, que le antepones el establecimiento de la variable de entorno LANG para que el programa se ejecute usando los locales adecuados.&lt;br /&gt;
&lt;br /&gt;
=== Como un servidor web autÃ³nomo ===&lt;br /&gt;
Si quieres que use su propio servidor web, ejecuta la lÃ­nea de comando siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cvstrac server 8008 /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== ConfiguraciÃ³n ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 -&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 $ cvs commit -f -R -m &amp;quot;imported into cvstrac&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== GestiÃ³n de usuarios ==&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* '''i (Check-in)''': AÃ±adir nuevo cÃ³digo al repositorio CVS.&lt;br /&gt;
* '''j (Read-Wiki)''': Ver las pÃ¡ginas del wiki.&lt;br /&gt;
* '''k (Wiki)''': Crear o modificar las pÃ¡ginas del wiki.&lt;br /&gt;
* '''n (New)''': Crear nuevos tickets de incidencias.&lt;br /&gt;
* '''o (Check-out)''': Leer el cÃ³digo del repositorio CVS.&lt;br /&gt;
* '''p (Password)''': Cambiar el password (el suyo, se entiende).&lt;br /&gt;
* '''q (Query)''': Crear o editar informes.&lt;br /&gt;
* '''r (Read)''': Ver tickets y cambiar histÃ³rico.&lt;br /&gt;
* '''w (Write)''': Editar tickets.&lt;br /&gt;
&lt;br /&gt;
== Notificaciones en los cambios en los tickets ==&lt;br /&gt;
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'' -&amp;gt; ''Change Notification''. El script que nos va a realizar esta tarea es uno tan simple como:&lt;br /&gt;
&lt;br /&gt;
 echo '%d %r'|mail -s '[cvstrac] %p/%s/%t' '%A'&lt;br /&gt;
&lt;br /&gt;
Buscando por ahÃ­ me he encontrado este otro mÃ¡s currado, pero no lo he probado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
use MIME::Lite;&lt;br /&gt;
use POSIX;&lt;br /&gt;
use Getopt::Long;&lt;br /&gt;
&lt;br /&gt;
Getopt::Long::Configure('bundling');&lt;br /&gt;
&lt;br /&gt;
if( @ARGV &amp;gt; 0 ) {&lt;br /&gt;
  GetOptions( 'a|assigned=s'    =&amp;gt; \$gszAssignedMail,&lt;br /&gt;
              'n|name=s'        =&amp;gt; \$gszAssignedName,&lt;br /&gt;
              'c|contact=s'     =&amp;gt; \$gszContact,&lt;br /&gt;
              'd|description=s' =&amp;gt; \$gszDescription,&lt;br /&gt;
              'i|ticket=s'      =&amp;gt; \$gszTicketNumber,&lt;br /&gt;
              'p|project=s'     =&amp;gt; \$gszProject,&lt;br /&gt;
              'r|remarks=s'     =&amp;gt; \$gszRemarks,&lt;br /&gt;
              's|status=s'      =&amp;gt; \$gszStatus,&lt;br /&gt;
              't|title=s'       =&amp;gt; \$gszTitle,&lt;br /&gt;
              'u|changed=s'     =&amp;gt; \$gszChanged,&lt;br /&gt;
              'o|originator=s'  =&amp;gt; \$gszOriginator,&lt;br /&gt;
              'y|type=s'        =&amp;gt; \$gszType );&lt;br /&gt;
$gszTime = POSIX::strftime(&amp;quot;%a, %m %d %H:%M&amp;quot;, localtime);&lt;br /&gt;
&lt;br /&gt;
  $szBuffer = &amp;lt;&amp;lt;EOT;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
BODY, P, TD, TH { background-color: white; font-size: 10px;&lt;br /&gt;
                  font-family: Arial, Helvetica, Sans-Serif; }&lt;br /&gt;
TH { text-align: left; font-size: 11px; background-color: #e0e0e0; }&lt;br /&gt;
PRE { font-family: Lucida Console, Monaco, Courier New, fixed; font-size: 10px; }&lt;br /&gt;
H1 { font-size: 18px; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Ticket &amp;lt;a href=&amp;quot;http://cvstrac/tktview?tn=$gszTicketNumber&amp;quot;&amp;gt;#$gszTicketNumber&amp;lt;/a&amp;gt; was updated by $gszChanged.&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;table border=0 cellpadding=2 cellspacing=1 bgcolor=&amp;quot;black&amp;quot; width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Title:&amp;lt;/th&amp;gt;&amp;lt;td width=&amp;quot;100%&amp;quot;&amp;gt;$gszTitle&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Type:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;$gszType&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Assigned to:&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;mailto:$gszAssignedMail&amp;quot;&amp;gt;$gszAssignedName&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Status:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;$gszStatus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=2&amp;gt;Description:&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=2&amp;gt;&amp;lt;pre&amp;gt;$gszDescription&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=2&amp;gt;Remarks:&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=2&amp;gt;&amp;lt;pre&amp;gt;$gszRemarks&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Generated by notify.pl at $gszTime&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://cvstrac/tktview?tn=$gszTicketNumber&amp;quot;&amp;gt;View Ticket&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
EOT&lt;br /&gt;
&lt;br /&gt;
$msg = new MIME::Lite&lt;br /&gt;
  From     =&amp;gt; 'issue-tracker@my.domain.com.com',&lt;br /&gt;
  To       =&amp;gt; $gszContact,&lt;br /&gt;
  Cc       =&amp;gt; $gszAssignedMail,&lt;br /&gt;
  Subject  =&amp;gt; &amp;quot;[$gszProject tracker] Ticket $gszTicketNumber updated by $gszChanged&amp;quot;,&lt;br /&gt;
  Type     =&amp;gt; &amp;quot;text/html&amp;quot;,&lt;br /&gt;
  Data     =&amp;gt; $szBuffer;&lt;br /&gt;
$msg-&amp;gt;attr( 'content-type.charset' =&amp;gt; &amp;quot;ISO-8859-1&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
$msg-&amp;gt;send( 'smtp', 'smart.host.my.domain.com');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/perl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso la invocaciÃ³n del script serÃ­a: &lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/notify.pl -n '%a' -a '%A' -c '%c' -d '%d' -i '%n' -p '%p' -r '%r' \&lt;br /&gt;
 -s '%s' -t '%t' -u '%u' -y '%y' -o '%w'&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ver tambiÃ©n ==&lt;br /&gt;
* [[CVS]]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://www.cvstrac.org/&lt;br /&gt;
* [http://www.developingprogrammers.com/index.php/2005/12/15/cvstrac-and-trac-combined-tutorial/ CVSTrac and Trac Combined Tutorial]&lt;br /&gt;
&lt;br /&gt;
[[CategorÃ­a:ProgramaciÃ³n]]&lt;/div&gt;</summary>
		<author><name>RoltrTrocd</name></author>	</entry>

	</feed>