Trac es un sistema de gestión documental (wiki), incidencias/mejoras (issue tracking system) para proyecto de desarrollo de Software.
Actualmente, en su especialidad es uno de los sistemas más utilizados. La versión original se encuentra diseñada para ser integrada con repositorios de control de versiones Subversion, pero existen diversos plugins que nos permiten utilizar otros backends… como por ejemplo Git.
Veamos como podemos instalar y poner en marcha el sistema Trac con un repositorio Git…
Instalación en Ubuntu GNU/Linux
La versión de Trac disponible en los repositorios de Ubuntu es la 0.10 actualmente y personalmente, prefiero instalar de forma manual Trac para así utilizar la última versión. Para ello, primero tendremos que instalar varias dependencias:
$ sudo aptitude install python-setuptools $ sudo aptitude install python-pysqlite2
Acto seguido, bajamos la versión que nos interese de Trac, descomprimimos e instalamos:
$ cd Trac-0.11rc1/ $ sudo python setup.py install
A continuación, descargamos Git Plugin y descomprimimos. En mi caso particular me he encontrado con un pequeño bug en el plugin que me impedía visualizar versiones antiguas del repositorio Git desde Trac, para arreglarlo simplemente tuve que modificar el fichero ‘gitplugin/0.11/tracext/git/git_fs.py’, línea 252:
def previous_rev(self, rev, path='');
La modificación consiste en añadir el tercer argumento ‘path’. El bug lo he reportado e imagino que el autor lo validará y corregirá (si aplica) en algun momento.
Es posible que cuando leáis este artículo, ya se encuentre corregido y por tanto podemos olvidarnos y pasar directamente a instalar el plugin:
$ cd gitplugin/0.11 $ sudo python setup.py install
Instalación en Microsoft Windows XP
En Windows me gusta trabajar directamente desde la terminal Cygwin y por tanto, doy por supuesto que tenemos instalada esa herramienta con los paquetes que listo en este artículo sobre Cygwin más el paquete para soportar Python.
Para instalar Trac, previamente necesitaremos instalar varias dependencias: setuptools y Genshi. Descargaremos los “.egg” y los instalaremos mediante los siguientes comandos:
sh setuptools-0.6c8-py2.5.egg easy_install Genshi-0.4.4-py2.5.egg
Por otra parte, también necesitaremos descargar PySQLite, descomprimir e instalar:
cd pysqlite-2.4.1/ python setup.py install
Finalmente, bajamos la versión que nos interese de Trac, descomprimimos e instalamos:
cd Trac-0.11rc1/ python setup.py install
Configuración básica
Trac funciona de forma que necesitamos generar una instancia para cada proyecto, imaginemos que ya tenemos un repositorio Git en el directorio ‘/home/usuario/repo/’ y queremos generar la interfaz web Trac.
En primer lugar generaremos una instancia de Trac en el directorio que nos interese:
mkdir test trac-admin test/ initenv
Trac-admin nos realizará diversas preguntas, en general podemos dejar todo por defecto excepto el sistema de control de versiones que será ‘git’ y el path del repositorio, el cual debe apuntar al directorio ‘.git/’, por ejemplo: ‘/home/usuario/repo/.git’.
A continuación, editamos el fichero ‘test/conf/trac.ini’ y validamos que el archivo incluye la siguiente información (en caso de que haya algo diferente o ausente, deberemos modificarlo o añadirlo):
[git] cached_repository = true git_bin = /usr/bin/git persistent_cache = true shortrev_len = 7 [components] # for plugin version 0.11.0.1+ tracext.git.* = enabled
A continuación, crearemos un usuario con su respectivo password. Para ello necesitamos primer generar un script que nos ayude, creamos el fichero ‘trac-digest.py’ con el siguiente contenido:
from optparse import OptionParser import md5 # build the options usage = "usage: %prog [options]" parser = OptionParser(usage=usage) parser.add_option("-u", "--username",action="store", dest="username", type = "string", help="the username for whom to generate a password") parser.add_option("-p", "--password",action="store", dest="password", type = "string", help="the password to use") (options, args) = parser.parse_args() # check options if (options.username is None) or (options.password is None): parser.error("You must supply both the username and password") # Generate the string to enter into the htdigest file realm = 'trac' kd = lambda x: md5.md5(':'.join(x)).hexdigest() print ':'.join((options.username, realm, kd([options.username, realm, options.password])))
A continuación generamos el usuario y lo guardamos en el fichero ‘digest.txt’:
$ python trac-digest.py -u usuario -p password > digest.txt
Al usuario generado, le daremos permisos de administración total:
$ trac-admin test/ permission add usuario TRAC_ADMIN
Y finalmente, ejecutaremos el servidor web integrado Tracd para que escuche por el puerto 8080, utilice nuestro fichero de usuarios y permita acceso a la instancia de Trac que acabamos de generar:
$ tracd --port 8080 --auth=test,digest.txt,trac test/
Para acceder a Trac simplemente tendremos que visitar la URL http://127.0.0.1:8080/test/, identifiarnos y empezar a jugar con el 😉
Para entornos estables lo ideal es configurar un servidor web Apache, para esto lo mejor es consultar directamente la documentación de Trac.
Uolas
Otra vez yo…;)
Tambien en su dia me estuvo mirando, pero lo descarte por otro alternativa mejor:
redmine (www.redmine.org)
Esta hecho en rails y soporte de serie varios sistemas de control de versiones (git,svn,mercurial, bazaar) sin tener que instalar ningun plugin.
Pero lo mas importante… es que una unica instalacion permite gestionar infinidad de proyectos y subproyectos…
Mejor mira aqui las features
http://www.redmine.org/wiki/redmine/Features
El proyecto es bastante joven 0.71, pero tiene un potencial enorme.
Hola Gerard 😉
Tiene muy buena pinta redmine, sobretodo si tal y como indicas quieres gestionar varios proyectos desde un mismo lugar. Queda pendiente probarlo!