Subversion, la alternativa centralizada a Git para el control de versiones
Con permiso de Git, Subversion es uno de los grandes actores en el panorama del software de control de versiones y es utilizado por reconocidas soluciones, como Ruby o FreeBSD además de por varios otros proyectos de la Fundación Apache. De hecho, hace años era considerado el sistema estándar en control de versiones para ámbitos empresariales, rango que hoy ostenta Git debido a su masiva adopción durante la última década por parte de los desarrolladores.
¿Que es la subversión?
Desarrollado actualmente por la Fundación Apache (aunque nació de mano de la empresa CollabNet allá por el año 2000), Subversión es uno de los sistemas de control de versiones del software más utilizados históricamente y, por supuesto, otra de las aplicaciones que podemos desplegar a golpe de clic en los Servidores Cloud de Arsys. En este artículo, explicamos las características de Subversión y lo enfrentamos con su competidor Git.
Características de Subversion
Subversion es un sistema de control de versiones centralizado, donde existe un repositorio que dispone de todo el historial de las versiones del software. En los sistemas centralizados, los distintos desarrolladores, que deben trabajar en red, tienen que conectarse a un repositorio central para adquirir archivos y acceder a sus modificaciones a lo largo del tiempo. Una vez adquiridos los archivos, es posible que varios desarrolladores puedan realizar modificaciones al mismo tiempo, desde distintos ordenadores. Gracias a Subversion no hay riesgo que los cambios realizados por un desarrollador borren los cambios introducidos por otros programadores que estén trabajando a la vez en el mismo archivo.
Aunque Subversion es un sistema de control de versiones relativamente sencillo, en comparación con otros competidores, cubre la mayor parte de las funcionalidades necesarias para un flujo correcto en el desarrollo colaborativo del software:
- Trabajar con archivos y directorios. Hace seguimiento a los directorios del mismo modo que lo hace sobre los archivos.
- Las copias, eliminaciones y renombrados de los archivos son versionados.
- Es capaz de almacenar metadatos, con información arbitraria, sobre los archivos o directorios del proyecto.
- La revisión del software se hace por commit y no para cada archivo o directorio particular.
- Sencilla creación de ramas o tags. Se pueden fusionar las ramas mediante un sistema de tracking que ofrece asistencia durante la administración de los cambios.
- Bloqueo de archivos. Aunque no es necesario bloquear los archivos para poder editar su código, es posible realizarlo si un desarrollador lo desea.
- Gracias a la resolución interactiva de los conflictos, es posible mezclar el código de los archivos versionados de manera sencilla, tanto desde la línea de comandos como diversos programas de interfaz gráfica.
Además, Subversión forma parte del Catálogo de Aplicaciones, por lo que podemos desplegarlo en los Servidores Cloud de Arsys en sólo unos clics, ya lo hagamos directamente a través del Catálogo o, directamente, en el proceso de creación de máquinas de Cloudbuilder Next. De este modo, tendremos un repositorio seguro y flexible para poner en marcha nuestros proyectos con totales garantías.
Subversion vs. Git
A día de hoy, la mayoría de los proyectos que utilizan un sistema de control de versiones optan por Git, del que ya hemos hablado en numerosas ocasiones en este blog. La diferencia fundamental entre Subversion y Git es que el primero es centralizado y el segundo, distribuido.
Los sistemas centralizados como Subversion disponen de un servidor donde están los archivos de todo el proyecto, junto con todas las modificaciones. Los desarrolladores necesitan descargar del servidor central aquellos archivos o partes del proyecto que desean modificar, y necesitan estar conectados a la red cuando se requiere enviar cambios en el código, como hemos explicado antes.
Por el contrario, los sistemas distribuidos como Git disponen de una copia local completa del repositorio, para cada desarrollador que participa en el proyecto. En los sistemas distribuidos no es necesaria la conexión a la red cuando se requiere hacer confirmaciones (commit), solamente cuando se necesita sincronizar el repositorio local contra el repositorio remoto.
Git también facilita el funcionamiento de los proyectos en local, ya que cada desarrollador tiene una copia del mismo y no solamente el conjunto de archivos con los que está trabajando. Esta diferencia fundamental a hecho posible el éxito de Git en el panorama actual, ya que permite que los desarrolladores trabajen de manera remota con mayor facilidad, incluso sin conexión a la red local o Internet.
Entre los equipos técnicos, Subversión se conoce muy habitualmente como SVN, el comando que se usa para trabajar con el sistema.