|
 Subversion es un sistema centralizado de control de versiones (VCS, por sus siglas en inglés) que permite realizar el seguimiento de los cambios en archivos empleados en proyectos de software. Basado en el trabajo inicial de CVS (Concurrent Versions System), constituye una implementación más eficiente de este último y ha conseguido desplazarlo en proyectos de software libre y abierto, y en organizaciones empresariales.
Ficha Técnica Subversion (SVN) http://subversion.tigris.org/
Fundador del proyecto: CollabNet (2000) La última versión disponible a noviembre de 2007 es la 1.4.5.
Conceptos Previos: Sistemas de Control de Versiones
En el proceso de implementación de un proyecto de software es típico que se construya de manera incremental el código fuente del producto final, con la interacción de varias personas y la depuración sucesiva de funcionalidades. Este código sufre cambios constantemente y requiere de alguna forma de seguimiento.
Los sistemas de control de versiones ofrecen mecanismos automatizados para realizar este seguimiento. Almacenan todos los ítems que se requieren administrar junto a sus diversas versiones, además de la información acerca de los cambios sufridos por estos ítems a lo largo de diversas iteraciones, y permiten crear versiones independientes y personalizadas.
Todos estos sistemas utilizan un almacén, denominado Repositorio, el cual puede estar centralizado en un servidor o puede encontrarse distribuido en varios computadores. Se consideran los siguientes tipos de versiones: Líneas base (Baselines, revisiones aprobadas desde las cuales se puede realizar cambios), Ramas (branches, versiones de desarrollo independiente) y Etiquetas (tags, tomas fotográficas del estado de un grupo de archivos en un momento dado que recibe un número de revisión).
La interacción entre el repositorio y los usuarios cliente se da a través de operaciones de copiado (checkout, que permiten la descarga de la toda la última versión disponible en el repositorio), actualización (update, la descarga hacia el usuario de los archivos más recientes existentes en el servidor) y confirmación (commit, la actualización de los archivos en el servidor y que han sido alterados localmente).
Adicionalmente a estas operaciones, un control de versiones también contempla la advertencia de conflictos (conflic, cuando la versión local difiere de la versión en servidor) y la combinación de distintas versiones (merge, la integración entre ramas separadas).
Ventajas
Subversion, al ser un sistema de control de versiones que tomó sus ideas a partir de una implementación previa (CVS), las ventajas son en su mayoría mejoras a éste último: - El seguimiento de la historia de cambios sufridos por los archivos involucra copias y cambios de nombre. - Las modificaciones en varios archivos y carpetas son atómicas, es decir, si por algún motivo uno de los archivos que son parte de la actualización no puede ser modificado entonces toda la operación es cancelada. Esto permite tener siempre datos consistentes. - Al realizar operaciones de sincronización entre los datos de los programas clientes y el servidor SVN sólo se transmiten aquellos archivos que han sufrido cambios, no todos los archivos. Esto redunda en un ahorro del uso del tráfico de red. - La creación de ramas y etiquetas es una operación más eficiente, ya que por cada rama no crea una nueva copia en el depósito de archivos, sino que utiliza un árbol diferencial de cambios con el cual conoce qué archivos pertenecen a una rama. - Permite bloquear archivos o carpetas individualmente, para evitar que sean editados por más de un usuario. Esto es usado generalmente en la edición de archivos binarios. - Siguiendo con los archivos binarios, es capaz de mantener el control de las diferencias entre archivos binarios, con lo cual consigue ahorrar espacio en el repositorio de archivos. - Se integra fácilmente a un servidor web Apache, y por tanto, puede utilizar sus opciones para la definición de controles avanzados y de navegación del depósito de archivos vía web.
Desventajas
Las deficiencias de este sistema en realidad son detalles técnicos que -en principio- no afectan el seguimiento de cambios. - El cambio en el nombre de un archivo es interpretado como dos operaciones: copia y borrado de la primera copia. Esto ocasiona que los cambios en el código sean perdidos de manera inadvertida tras múltiples operaciones de combinación de copias. - Subversion no implementa algunas operaciones administrativas, como la eliminación de registros de algunos datos almacenados en el repositorio, la cual puede hacerse de forma manual y engorrosa. - Subversion requiere que cada carpeta en el lado del cliente incluya una carpeta oculta ".svn". Estas carpetas impiden la generación de copias distribuibles de una versión individual (se requiere realizar una operación adicional de exportación) y son las causantes de la mayoría de problemas que enfrentan los usuarios de esta herramienta. - No resuelve el problema de aplicar repetidamente parches entre ramas, por lo cual no facilita el llevar la cuenta de qué cambios se han trasladado. En la versión actual se resuelve a través de mensajes adecuados al momento de registrar los cambios, pero se espera una solución óptima para la versión 1.5.
Programas cliente
Una característica adicional, que puede interpretarse como ventaja o desventaja, es que los desarrolladores de Subversion no proveen un programa cliente oficial para la interacción de los desarrolladores con el servidor donde se almacenan los archivos. Esto ha dado lugar a la aparición de una multitud de herramientas.
Los programas más empleados son: Tortoise SVN Un programa de control de código diseñado para entornos Windows, integrado al Explorador de Windows. Su interfaz está disponible en 28 idiomas y soporta las operaciones típicas de control de versiones en documentos de oficina como Word. Última versión: 1.4.5. Rapid SVN Un programa escrito en C++ disponible para Windows, GNU/Linux, MacOS X, entre otros. Última versión: 0.9.4. SmartSVN 3 Una implementación multiplataforma elaborada en Java elaborada por Syntevo. Última versión: 3.0.4. Adicionalmente, existen plug-ins de código abierto para entornos de programación que permiten la integración de éstos con las operaciones básicas de interacción con un repositorio de archivos. Entre ellos podemos citar: Subclipse Una extensión que trabaja con Eclipse 3.2 o superior, un entorno de programación diseñado inicialmente para trabajar con proyectos basados en lenguaje Java. Última versión: 1.2.4. Ankh Un plug-in diseñado para Visual Studio .NET, que ofrece funcionalidades básicas. Última versión: 1.0.
Referencias Bibliográficas |