Sistemas de control de versiones: Subversion

De los múltiples sistemas existentes, uno de los más útiles y utilizados es Subversion. Subversión surge para reemplazar al gestor usado en sistemas Unix (CVS) con el objetivo de mejorar algunos aspectos que dificultaban el uso de la aplicación. Existen versiones tanto del cliente como del servidor para cualquier plataforma.

El servidor de Subversión gestiona un repositorio centralizado con la política copiar-modificar-mezclar. Sin embargo, existen herramientas para sincronizarlo con otros repositorios y es posible configurar repositorios con la política bloquear-modificar-desbloquear. Las características fundamentales son:

  • Número de versión global al repositorio que se incrementa con cada cambio, por lo que es posible volver a una versión anterior indicando dicho número global.
  • Control de cambios en ficheros y directorios (si, almacena y controla cambios en árboles completos de carpetas y ficheros). Mantiene el histórico de versiones de un fichero aunque se mueva o renombre.
  • Detecta y trata apropiadamente los ficheros binarios, uno de los puntos débiles de CVS. A estos ficheros les añade una propiedad indicando su tipo.
  • La transmisión entre cliente y servidor incluye únicamente los cambios lo que supone un ahorro del ancho de banda. Además, los cambios se calculan a nivel de byte (en lugar de línea ampliamente usado) lo que reduce aún más el tamaño de las modificaciones.

Por su parte, es posible atacar al servidor utilizando distintos clientes independientemente de la plataforma en la que ejecute cada uno de ellos. Es posible utilizar un cliente en Windows que se conecte con un servidor en Unix o Mac y viceversa. Esta facilidad, permite la creación de clientes bastante avanzados adaptados a cada plataforma como, por ejemplo, la integración con documentos de office que dispone el cliente de Windows.

El uso de subversión es muy sencillo. El proceso si se usa una consola es:

svn co ruta_repositorio [destino]
Descarga una copia (checkout) de cualquier carpeta contenida en el repositorio (no es necesario bajar la raíz del repositorio, se puede bajar cualquier carpeta contenida en el mismo) que se denominará copia de trabajo. La copia de trabajo son ficheros locales en la máquina por lo que puede ser modificada según se desee.

Las rutas de repositorio tienen la forma protocolo://usuario:password@servidor/ruta. Existen múltiples protocolos como Webdav, svn (protocolo propio), svn+ssh (protocolo svn a través de un túnel ssh para asegurarlo…

svn update
Se encarga de descargar los últimos cambios del repositorio y mezclarlos en la copia de trabajo para que coincida con la última versión disponible.

Si en el proceso de mezcla se detectan conflictos irresolubles, se marcan en la copia de trabajo para que el usuario los resuelva. De esta forma, se evita corromper el repositorio.

svn ci [ruta]
Cuando se finalizan los cambios se envían al repositorio (commit). En este momento, se comprueba si la versión base del usuario es la última del repositorio y si es así se envían los cambios creando una nueva revisión.

Si las versiones no coinciden, el usuario deberá actualizar (update) su copia de trabajo con lo que se marcarán los conflictos en la copia de trabajo.

Además de este cliente de consola, existen aplicaciones gráficas que realizan ese trabajo de forma transparente y más agradable para el usuario.

Subversion logoSi se utiliza Windows, la opción más adecuada es TortoiseSVN. Es un cliente que se integra con el explorador de Windows y que permite realizar todas las acciones mediante entradas en el menú contextual de los ficheros y carpetas.

Para el escritorio KDE existe un plugin similar denominado kdesvn aunque no implementa toda su funcionalidad. Sin embargo, para un uso habitual es suficientemente útil.

[ Publicado originalmente el 24 de agosto de 2007 ]
 
Este artículo pertenece a la serie
Control de versiones
Referencias:
About these ads

Un comentario en “Sistemas de control de versiones: Subversion

Los comentarios están cerrados.