Comandos de Subversion, Investigación Hudson y Trac (Parte Teorica)
Comandos SVN
Desde el lado del cliente-programador, las cosas son más sencillas. A partir de que el programador se haya instalado el svn, hay cientos de comandos que puede utilizar para la interacción con el svn, entre ellos quisiera descatar algunos.
Comandos útiles
Conseguir el código:
svn checkout file:///ruta/hasta/repositorio/ProyectoA/trunk /directorio/de/trabajo/ProyectoA/
Detecta todos los cambios de fichero y árbol que el cliente ha hecho en su copia local:
svn status
Actualizar el código del proyecto:
svn update
Tras modificar y guardar los cambios, se envian al server:
svn commit --message 'comentario'
Añadir archivos al código:
svn add /archivo-N/ --force
Borrar archivos:
svn delete archivo
Rechazar los cambios en un archivo:
svn revert archivo
Volver a una versión anterior determinada:
svn update -r N
Donde N denota la revisión N que a su vez representa el estado del sistema de ficheros del repositorio tras el envío de cambios N-ésimo.
svn revert para eliminar todos sus cambios locales.
Ver un informe de los cambios producidor:
svn log
Fijar una versión, crear una rama, etiquetandola con un nombre sencillo:
Etiquetando la última versión:
svn copy file:///path/repositorio/trunk file:///path/repositorio/tags/0.01-prerelease -m "Version 0.01"
O bien especificando una revisión concreta:
svn copy -r 3 file:///path/repositorio/trunk file:///path/repositorio/tags/0.03-prerelease -m "Version 0.03"
Para hacer una copia limpia del código, y poderlo distribuir
svn export file:///path/repositorio/ProyectoA/trunk
tar -cvf proyectoA.tar trunk
gzip proyectoA.tar
Hacer copias de seguridad del repositorio:
svnadmin dump /paht/repositorio/ProyectoA | gzip -9 > dump_svn_proyectoA.gz
Si se incluye en el CRON, se harán las copias de seguridad cada tanto de una manera automática.
Comandos SvnAdmin
Crear Repositorio
svnadmin create /usr/local/svn/repos
Comando para hacer un backup
svnadmin dump /home/javoaxian/repositorioSVN | gzip -9 > respaldo_repositorio_2008-09-08.gz
Deltify
comprime el repoitorio almacenado solo las diferencias respecto a la version anterior
Dump
Vuclea el contenido del repositorio empleando un formato portable
Hotcopy
Crea una copia de un repositorio de forma segura aunque este siendo usado
List-dblogs
Muestra los archivos de historial de Berkeley DB asociados con el repositorio
List-unused-dblogs
Muestra los archivos de historial de berkeley DB asociados con el repositorio y que ya no son usados. Pueden borrarse sin problemas, aunque podrian almacenarse para recuperarse de una perdida de datos catastrofica.
Load
Carga una serie de revisiones en un repositorio a partir de un flujo de datos que emplee el mismo formato de volcado que el subcomando dump
Lstxns
muestra la lsita de transacciones que todavia no han sido enviadas
Recover
realiza una recuperacion en caso de error.
Rmtxns
elimina las transacciones limpiamente.
Setlog
sustituye el mensaje de historial de una revision en concreto por otro nuevo.
Verify
Compruebala integridad del repositorio.
Herramientas Para Integracion Continua
Existen diversos productos en el mercado para la Integracion Continua. La mayoria cuentan con una interfaz web que muestra el estado de los proyectos, ultimas corridas, e informes gráficos de diversos tipos.
Hudson
Esta herramienta de Integración Continua nos lleva un paso más allá de los resultados de nuestra solución de Ciclo de Vida, que es Maven. Es decir, ya no sólo se trata de paquetizar e integrar las distintas áreas de desarrollo de nuestro producto resolviendo las dependencias de código de los paquetes subdivididos, sino de que la integración sea efectiva, cumpla nuestros criterios de calidad y el tiempo empleado en la detección de errores y su resolución sea el menor posible. Hudson nos proporciona una solución sencilla para llevarlo a cabo.
Podemos comparar a Hudson con una de las herramientas CI más consolidadas actualmente, que es CruiseControl, comprobando que, además de ofrecer mayor amplitud de funcionalidad, sus características vienen determinadas por la instalación sencilla de plugins.
Resumiendo, parte de las ventajas de Hudson vienen determinadas por:
- Fácil instalación y uso (un fichero WAR es toda la herramienta de instalación)
- Plugins fácilmente extensibles
- Soporte completo de Maven, lo que nos facilita enormemente la integración
- Soporte para entornos “colaborativos” (múltiples equipos y grupos de proyectos)
- Software Libre 100%
- Sistema de alertas intuitivo para los desarrolladores
- Muy pocos problemas “reportados” de esta herramienta
Maven
De forma más detallada a nuestra introducción anterior, Maven es una herramienta de gestión y comprensión de proyectos de desarrollo de software, normalmente en Java, que nos permite compilar, testar integridad y compilación, desplegar, documentar y gestionar las dependencias de código de forma sencilla y extendible.
Maven es una herramienta abierta y libre (pertenece al Proyecto Apache) claramente orientada al trabajo en equipo, siendo esta es una de las principales razones por las que la elegimos como herramienta ideal para metodologías agiles de programación y posterior Integración Continua con otras herramientas software.
La herramienta es compleja pero fácil de usar y muy rápida a la hora de compilar y desplegar proyectos. Entre las ventajas de usar Maven como herramienta de desarrollo en el trabajo en equipo, podemos destacar:
La dependencia entre proyectos no es problema
Un mismo proyecto se puede ejecutar en distintos entornos. Sólo hay que cambiar un archivo de configuración
La integración del trabajo de desarrolladores es transparente
Hay una maximización de la cohesión del código y una minimización del acoplamiento
Fácil reutilización del código
Para los desarrolladores familiarizados con herramientas similares, como Apache Ant, Maven ofrece las mismas funcionalidades, con la diferencia de gestionar las dependencias de proyectos de una forma mucho más sencilla y comprensible, optimizando notablemente el tiempo de desarrollo en trabajos multiproyecto.
En definitiva y en nuestro caso, Maven nos proporciona una solución modular orientada al trabajo en equipo que elimina problemas de herramientas anteriores, como es la compleja resolución de dependencias, a la vez que nos permite integrar el trabajo con otras herramientas de Integración Continua. Es importante destacar para nuestro caso que se dispone de un plugin para proyectos JRuby.
CruiseControl
CruiseControl es un framework para el proceso de Integracion Continua. Incluye, aunque no es limitado, plugins para notificaciones por Email, Ant, y se puede usar con varias herramientas de control de versiones. Provee una interfaz web para ver el detalle del actual y anteriores build’s.
Herramientas de Gestores de Fallos
Trac
Trac es un poco más que un gestor de fallos: realmente es un sistema wiki y gestor de fallos integrado. Usa el enlace Wiki para conectar ejemplares, ficheros, grupos de cambios de control de versión, y simples páginas wiki. Es bastante simple de configurar, y se integra con Subversion
GNATS
http://www.gnu.org/software/gnats/
GNU GNATS es uno de los gestores de fallos de código abierto más antiguos, y se usa extensamente. Su mayor fortaleza reside en la diversidad de interfaces (no solamente puede ser usado a través de un navegador WEB, sino que también a través de correo electrónico o utilidades de línea de comandos), y el almacenamiento de los ejemplares en texto plano. El hecho de que los datos de todos los ejemplares se almacenen en ficheros de texto en el disco hace que sea más fácil escribir herramientas a medida para buscar y analizar sintácticamente los datos (por ejemplo, para generar informes estadísticos). GNATS también puede absorber correos electrónicos de muchas maneras, y añadirlos a los ejemplares apropiados basados en patrones dentro de las cabeceras del correo electrónico, lo que hace que el registro de las conversaciones del usuario/desarrollador sean muy fáciles.
Scarab
http://scarab.tigris.org/
Scarab está pensado para ser un gestor de fallos altamente parametizable y con todas las características, ofreciendo más o menos el conjunto total de las características ofrecidas por otros gestores de fallos: entradas de datos, consultas, informes, notificaciones a grupos interesados, acumulación colaborativa de comentarios, y gestión de dependencias.
Se parametriza a través de páginas web administrativas. Se puede tener múltiples “módulos” (proyectos) activos en una única instalación de Scarab. Dentro de un módulo dado, se puede crear nuevos tipos de ejemplares (defectos, mejoras, tareas, peticiones de apoyo, etc.), y añadir atributos arbitrarios, para afinar el gestor a los requisitos específicos de tu proyecto.
Tabla Compartiva
|
Herramienta |
Proyecto Origen |
Open Source |
Free |
Lenguaje de Aplicación |
Numero de Desarrolladores Activos |
Otras Dependencias |
Subversion |
Añade Nuevos Proyectos |
Clona Proyectos |
Autenticacion de Usuario |
|
HUDSON |
java.net |
si |
si |
java |
5 a 10 |
JRE |
si |
si |
si |
si |
|
CRUISECONTROL |
ThoughtWorks |
no |
Gratis para los pequeños equipos y proyectos de código abierto |
java |
5 |
JRE, SCM cliente |
si |
Falla |
no |
si |
|
CUNTINUUM |
ThoughtWorks |
no existe |
Edicion Gratuita Disponible |
java |
? |
SCM cliente |
si |
si |
no |
si |
c
Conclusion
Hudson es una herramienta libre y abierta relativamente nueva de Integración Continua muy utilizada y de gran éxito en el entorno de desarrollo del software. Su arquitectura basada en plugins y su fácil instalación la hacen una herramienta potente y fácil de usar. El desarrollo de plugins es una característica importante al destacar su flexibilidad.
Trac permite enlazar información entre una base de datos de errores de software, un sistema de control de versiones y el contenido de un wiki. También sirve como interfaz web de un sistema de control de versiones como Subversion, Git, Mercurial, Bazaar o Darcs.
Aún no hay comentarios
¡Sea el primero en comentar!