Herramienta Trac

Herramienta Trac
Información sobre la plantilla
Trac.JPG
Concepto:Trac es una Herramienta para la gestión de proyectos y el seguimiento de errores escrita en Python


Trac: Es una Herramienta para la gestión de proyectos y el seguimiento de errores escrita en Python, inspirado en CVSTrac. Su nombre original era svntrac, debido a su fuerte dependencia de Subversion. Está desarrollado y mantenido por Edgewall Software, es software libre y de código abierto. Esta herramienta permite seguir un completo control de las funcionalidades y errores del código que se está implementando. Sin embargo, Trac es una herramienta mucho más completa, pues está construido sobre una wiki que nos permite documentar todo el software sobre una única plataforma, integrando la documentación con el control de funcionalidades y errores a implementar así como también con el propio código a través de un repositorio de Subversion.

Arquitectura de la herramienta Trac

El Trac está compuesto por una serie de paquetes que conforman su Arquitectura. El principal paquete es el núcleo (trac.core) que implementa solo los componentes necesarios que facilitaran ampliar las funcionalidades de otros componentes que se adicionen al sistema. Se define un componente como un objeto que proporciona un determinado tipo de servicio en el contexto de la aplicación. Hay al menos una instancia de cualquiera de los componentes y utilizan el patrón de Arquitectura instancia única (singleton), lo que implica que no sea referenciado directamente a una entidad de la aplicación del modelo de objetos, sino que representen las funcionalidades de los subsistemas. Los componentes pueden declarar "la ampliación de puntos" para que otros puedan "conectarse" a ellos y así poder mejorar la funcionalidad extendida. Todo lo que se necesita es que el componente original exponga uno o más puntos de extensión. Un componente puede extender a cualquier número de otros componentes y ofrecer sus propios puntos de extensión. Esta característica es la base de una arquitectura basada en extensiones.

Arquitectura Trac


Instalación de Trac en Debian

  • apt-get install trac
  • trac-admin /var/soleupix-trac initenv (el directorio no debe existir)
  • Editar /var/soleupix-trac/config/trac.ini al gusto, (importante, poner la ruta del directorio donde tenemos el svn)
  • Configurar usuarios, milestones, versiones, tipos de ticket... con # trac-admin /var/soleupix-trac (para ver los comandos escribir help)

Para Habilitar

  • Para habilitar la web hay dos modos, trac está programado en python y puede ponerse un cgi o bien usar el módulo de apache mod_python, yo he usado el módulo de python que recomiendan por ser más rápido:
  • apt-get install libapache2-mod-python
  • Meter esto dentro de /etc/apache2/sites-avalaible/trac:

<Location /trac> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/soleupix-trac PythonOption TracUriRoot /trac </Location> <Location /trac/login> AuthType Basic AuthName "myproject" AuthUserFile /etc/apache2/trac.htpasswd Require valid-user </Location>

Para crear el fichero de contraseñas

  • htpasswd2 -c -m /etc/apache2/trac.htpasswd USUARIO ( -c crea el fichero, para añadir más usuarios no ponerlo)
  • a2enmod mod_python (activar modulo de python)
  • a2ensite trac (activar sitio trac)
  • /etc/init.d/apache2 force-reload

Ventajas que ofrece trabajar con Trac

  • Tenemos una vista del código svn y maneja las diferencias de manera impresionante
  • Podemos ver el histórico del proyecto (timeline)
  • Gestión de tickets (algo parecido a un bugzilla)

Previsiones de características del proyecto (milestones)

  • Wiki supercompleto integrado en el resto del sistema trac.
  • El buscador, busca tanto por logs de cambios svn, como entre las páginas del wiki o los tickets.
  • Es autodocumentado, cualquier cosa que quieras hacer/configurar, la buscas en el buscador y te dirá como hacerlo.

Plugins en Trac

Los plugins de Trac utilizan para su desarrollo la arquitectura basada en extensiones de Trac en la implementación de interfaces que son necesarias para su funcionamiento, ejemplo de algunas de estas son: INavigationContributor, IRequestHandler, ITemplateProvider. Estas poseen comportamientos específicos y realizan importantes funciones en la confección de plugins.

  • INavigationContributor: Utilizada para su ubicación en la barra de navegación
  • IRequestHandler: Utilizada para el tratamiento de las peticiones HTTP.
  • ITemplateProvider: Utilizada para la utilización de documentos estáticos, como plantillas.

Fuente