Trac es una herramienta de gestión de proyectos, principalmente de software, que unifica un sistema wiki con un sistema de seguimiento (issue tracking) con claras ventajas a la hora de trabajar con un repositorio de subversion.

Esta entrada constituye una breve guía de iniciación a Trac.

Instalación

Una vez instalado el programa (utilizando el gestor de paquetes según la distribución utilizada) disponemos de varios métodos para ponerlo en funcionamiento: como un CGI, con Apache y mod_python o con el servidor que viene incluido. Para esta guía utilizaré el servidor incluido.

Creación de un nuevo entorno

Haciendo uso de trac-admin podemos crear un nuevo entorno:

$ trac-admin /srv/trac/proyecto initenv

Creating a new Trac environment at /home/chernando/trac/proyecto

Trac will first ask a few questions about your environment
in order to initalize and prepare the project database.

Please enter the name of your project.
This name will be used in page titles and descriptions.

Project Name [My Project]> Proyecto

Please specify the connection string for the database to use.
By default, a local SQLite database is created in the environment
directory. It is also possible to use an already existing
PostgreSQL database (check the Trac documentation for the exact
connection string syntax).

Database connection string [sqlite:db/trac.db]>

Please specify the type of version control system,
By default, it will be svn.

If you don't want to use Trac with version control integration,
choose the default here and don't specify a repository directory.
in the next question.

Repository type [svn]>

Please specify the absolute path to the version control
repository, or leave it blank to use Trac without a repository.
You can also set the repository location later.

Path to repository [/path/to/repos]> /srv/svn/proyecto

Please enter location of Trac page templates.
Default is the location of the site-wide templates installed with Trac.

Templates directory [/usr/share/trac/templates]>
...

Con esto tendremos una mínima configuración funcional de Trac para nuestro proyecto.

Comprobación rápida con el servidor incluido

Para comprobar el aspecto que van teniendo las cosas utilizaremos el servidor incluido en el puerto 8000:

$ tracd -p 8000 /srv/trac/proyecto

Abriendo un navegador en http://localhost:8000/ podremos contemplar el entorno por defecto. Aprovechando el objetivo didáctico de este ejemplo os animo a que juguéis con la wiki y sistema de tickets.

Personalización del entorno

En el fichero proyecto/conf/trac.ini podréis encontrar cosas como [header_logo] que os permitirá cambiar el logotipo o como [project] para fijar el nombre, URLs relacionadas y demás.

Además en el directorio proyecto/templates podéis añadir vuestras propias plantillas que tendrán preferencia sobre las del sistema.

Ajustando detalles sobre nuestro proyecto: componentes e hitos

trac-admin crea una serie de componentes y de hitos genéricos que con toda seguridad no nos servirán para nuestro proyecto. Para gestionar estos detalles utilizaremos trac-admin de nuevo.

$ trac-admin /srv/trac/proyecto

Con esto tendremos una shell interactiva con la que podremos ajustar los detalles que necesitemos. Por ejemplo para cambiar los componentes podemos realizar:

> component list

Name        Owner
--------------------
component1  somebody
component2  somebody

> component rename component1 interfaz
> component chown interfaz ana
> component rename component2 datos
> component chown datos beatriz
> component add nucleo
> component add nucleo carlos
> component list

Name      Owner
-----------------
datos     beatriz
interfaz  ana
nucleo    carlos

Con esto ya tenemos creados 3 componentes (ajustando el responsable de cada componente) que quedarán reflejados en el sistema de tickets. Veamos ahora modificación de los hitos:

> milestone list

Name        Due  Completed
--------------------------
milestone1
milestone2
milestone3
milestone4

Trac [/tmp/trac/proyecto]> milestone rename milestone1 0.1
Trac [/tmp/trac/proyecto]> milestone rename milestone2 0.2
Trac [/tmp/trac/proyecto]> milestone rename milestone3 1.0
Trac [/tmp/trac/proyecto]> milestone rename milestone4 2.0
Trac [/tmp/trac/proyecto]> milestone list

Name  Due  Completed
--------------------
0.1
0.2
1.0
2.0

Ajustemos las fechas de entrega de cada hito:

Trac [/tmp/trac/proyecto]> milestone due 0.1 2007-07-01
Trac [/tmp/trac/proyecto]> milestone due 0.2 2007-09-01
Trac [/tmp/trac/proyecto]> milestone due 1.0 2008-01-01
Trac [/tmp/trac/proyecto]> milestone due 2.0 2009-01-01
Trac [/tmp/trac/proyecto]> milestone list

Name  Due         Completed
---------------------------
0.1   2007-07-01
0.2   2007-09-01
1.0   2008-01-01
2.0   2009-01-01

Una vez completado un hito podremos utilizar el comando milestone completed:

> milestone completed 0.1 now

Podéis curiosear más opciones haciendo uso del comando help dentro de la shell.