11.08.2011

Control de versiones


Introducción.

Debido a la necesidad de repartir el trabajo y que varias personas participan en la generación de los archivos o entregables, puede llegar un momento en el cual no se tenga el conocimiento de qué  versión del archivo o ducumento sea la más actualizada.

Para evitar esto, se puede implementar un sistema de control de versiones. Existen varios de estos sistemas en el mercado, por ejemplo:
  • CVS
  • Subversion
  • Git
  • Mercurial
  • Bazzar
  • Plastic SCM
Esta entrada se centra en describir qué es Subversion, conceptos básicos y arquitectura.

¿Qué es Subversion?

Subversion o también conocido como SVN, es un sistema de que administra archivos, directorios y los cambios realizados a estos. Esto permite recuperar versiones previas de un archivo o un directorio y examinar los cambios que han sufrido.
Subversion puede trabajar en un entorno de red, lo que permite ser utilizado por varias personas y diferentes equipos.

Conceptos básicos.

Control de versiones.

Un sistema de control de versiones (o sistema de control de revisiones o sistema de control de la configuración) es un sistema que da seguimiento a las versiones (o revisiones) de archivos y directorios. Lo que hace un sistema de control de versiones útil es el hecho de poder explorar los cambios que resultaron en cada versión y quién los realizo.

El repositorio.

Es la base del sistema de control de versiones, es la central donde se almacena toda la información y cualquier número de clientes se puede conectar a este.

La copia de trabajo.

La copia de trabajo es literalmente una copia local de un usuario en particular, y las tareas de comunicar los cambios realizados a los archivos recaen en el cliente de SVN.

Las revisiones.

Cuando el cliente de SVN comunica los cambios realizados cualquier número de archivos y directorios se gestiona como una transacción atómica ¿Qué significa esto? Que cuando se envían los cambios al repositorio deben de ser todos o ninguno de ellos.


Fig. Representación de las revisiones.

 

Descripción del ciclo de trabajo.

El ciclo de trabajo común con SVN se podría representar de la siguiente manera:
  1. Actualizar la copia de trabajo (update).
  2. Realizar tus cambios. Ya sea a archivos existentes en el repositorio o agregar, eliminar o mover otros archivos.
  3. Revisar los cambios.
  4. Corregir errores.
  5. Resolver cualquier conflicto.
  6. Enviar cambios (commit).

 

Arquitectura de SVN.

Un sistema de control de versiones encaja en una arquitectura cliente servidor similar a un servidor de archivos (FTP), pero a diferencia del servidor de archivos  cuenta con sus peculiaridades ya mencionadas. A continuación se muestra  detalle los elementos que contiene SVN.
Servidor: El servidor se puede descargar sin costo desde http://subversion.tigris.org/ donde también se puede encontrar recursos e información sobre su uso.
Cliente: Existen varios clientes para gestionar la copia de trabajo. Para Windows se encuentra TortoiseSVN (http://tortoisesvn.tigris.org/ ) el cual es un cliente que se incorpora al explorador y es fácil de usar.



Fig. Arquitectura de SVN. fuente: SVN-book.


Conclusiones.

El objetivo principal de SVN es gestionar las revisiones que van surgiendo, y compartir estas a través de la red con otros compañeros de trabajo, para contar con la versión más actual. Se puede encontrar información muuuuy completa en el SVN-book en línea: http://svnbook.red-bean.com/