Antartec es Open Source, Parte 5: Subversion (SVN)

26 Noviembre 2008 por Juan Eladio Sánchez Rosas Deja una respuesta »

En esta ocasión se presentará Subversion, la herramienta utilizada para el seguimiento de la evolución de los desarrollos de software que han sido construídos por el equipo de Antartec

Qué es Subversion

Subversion es un sistema centralizado de control de versiones 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 mayor popularidad en proyectos de software libre y abierto y en organizaciones empresariales.

Visión General

Los sistemas de control de versiones ofrecen mecanismos automatizados para realizar seguimiento de la implementación de proyectos de software. 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.

Subversion es un sistema de control de versiones que administra los archivos y directorios en el transcurso del tiempo. Hace posible recuperar antiguas versiones de los archivos, examinar el cambio en la historia de los mismos y puede ser accedido a través de la red, para ser usado por diferentes personas. Subversion trabaja con el modelo copy-modify-merge (copiar-modificar-fusionar), en el cual en cada cliente se crea una copia de los archivos y directorios (copy). Así se puede trabajar en paralelo, modificando sus copias privadas (modify). Finalmente estas copias son fusionadas (merge) en una versión final.

Si por ejemplo dos personas trabajan en el mismo archivo, y una de ellas guarda primero sus cambios en el repositorio (check in), entonces la segunda al querer hacer lo mismo será notificada de que su copia local está desactualizada de la versión que existe en el repositorio. La aplicación cliente puede hacer la fusión de los archivos para luego volver a guardar los archivos actualizados en el repositorio. En caso exista la posibilidad de conflictos, es decir los cambios de una persona traslapen los cambios de otra. La aplicación cliente marcará al archivo local con estado conflicto, el usuario podrá ver ambas copias del archivo y manualmente hacer los cambios respectivos.

El uso de Subversion en Antartec

Subversion viene siendo utilizado como esquema de repositorio centralizado de los desarrollos de Antartec desde hace tres años. Durante el tiempo transcurrido se han observado los siguientes cambios:

  • La disponibilidad de un histórico completo de la implementación del código fuente de un proyecto de software. Los esquemas de etiquetado y de generación de ramas de desarrollo nos ha permitido contar con versiones identificables conforme se efectuaban entregas de desarrollo, posibilidad de obtener una copia de una versión específica (sin importar el tiempo en el que fue culminada) y derivar nuevas versiones a partir de una línea base de desarrollo.
  • Reducción de los errores ocasionados por trabajo de equipos de programadores. Aún cuando los programadores se encuentren en distintas ubicaciones geográficas (como ha ocurrido en algunos de nuestros proyectos internacionales), es posible el trabajo sobre el mismo código fuente, dado que SVN es capaz de reconocer si los cambios de un programador entran en conflicto con las modificaciones realizadas por otros integrantes del equipo.
  • Cada vez que se realizan operaciones de sincronización entre los datos de los usuarios con acceso al repositorio y el servidor SVN sólo se transmiten aquellos archivos que han sufrido modificaciones respecto a la última vez que se efectuó una actualización respecto al repositorio, no todos los archivos. Esto redunda en un ahorro del uso del tráfico de datos vía una red.

Programas clientes y administrativos

Subversion es únicamente el esquema de trabajo al repositorio de control de versiones. Para acceder al repositorio se requiere hacer uso de programas cliente, de los cuales en Antartec hemos tenido experiencias positivas usando:

  • Tortoise SVN: Un programa de control de código diseñado para entornos Windows, integrado al Explorador de Windows.
  • SmartSVN 3: Una implementación multiplataforma elaborada en Java por Syntevo.
  • Subversion Support in NetBeans IDE: Módulo disponible en Update Center que provee integración con las versiones 1.3 y 1.4 de Subversion.

Durante un tiempo se utilizó RapidSVN, pero debido a diversas errores de funcionamiento dejó de usarse.

Asimismo, a nivel de administración del repositorio, en los últimos meses se ha utilizado SVN Manager, una herramienta accesible vía web que permite administrar un repositorio SVN bajo un servidor web Apache instalado en Linux.

A manera de conclusión

Subversion (SVN) es el mecanismo de repositorio centralizado de proyectos de software de mayor popularidad entre los equipos de desarrollo. Hace posible llevar control de la evolución incremental del código fuente de los productos de software y la interacción entre programadores con distintos horarios y ubicaciones geográficas que trabajan en un mismo proyecto.

Más información

Tigris.org
Subversion (SVN)

Antartec
Antartec – Tecnologías

Herramientas SVN
SmartSVN 3
Subversion Support in NetBeans IDE
Tortoise SVN
SVN Manager

Librerías para incluir soporte de SVN en aplicaciones
SVN-Kit (Java)
SharpSVN (.NET)
PHP-SVN-Client (PHP)

Related posts:

  1. Antartec es Open Source, Parte 3: Alfresco
  2. Antartec es Open Source, Parte 2: Asterisk
  3. Antartec es Open Source, Parte 1: Zimbra Collaboration Suite
  4. Antartec es Open Source, Parte 4: Mantis Bug Tracker

3 comentarios

  1. Martin dice:

    existen open sources de programas clientes, quiero utilizar el código para integrar una aplicación con un subversion

    muchas gracias

  2. Hola Martín:
    Ya que no precisaste un lenguaje de programación en particular, menciono tres alternativas:
    - Para Java, existe SVN Kit http://svnkit.com/
    - Para plataformas .NET existe SharpSVN http://sharpsvn.open.collab.net/
    - Para PHP encontré PHP SVN Client http://www.phpclasses.org/package/4270-PHP-Retrieve-files-from-an-SVN-repository-in-pure-PHP.html

  3. Por citar un ejemplo, Netbeans utiliza los comandos directamente para evitar dependencias con librerias externas y sólo depender de que exista el cliente de SVN por línea de comandos