View all posts

Resumen sobre ventajas de utilizar SubVersion

El presente es el artículo escrito por Rolando Vindas de InterGraphicDESIGNS, el cual fue publicado por la revista RadarTI en su primera versión impresa.

Trabajo colaborativo: Subversion, una opción efectiva para controlar y ordenar el desarrollo

Antes de existir las herramientas para controlar las versiones de su proyecto, era común escuchar entre los desarrolladores frases tales como: “¿Quién me cambió esta línea de código?”, “sobrescribí los cambios y ahora no recuerdo cómo devolverme”, “esto ya lo había resuelto y no recuerdo el cambio que había hecho”, entre otras. De ahí que sea indispensable contar con una herramienta que facilite el control de versiones.

Subversion se ha ido posicionando como una de las herramientas de control de versiones más populares. En este artículo presentamos los beneficios que hemos experimentado en InterGraphicDESIGNS desde que iniciamos su uso, especialmente en proyectos de desarrollo Web donde interactúan varios desarrolladores, tanto del área de informática como de diseño gráfico.

Es necesario recalcar que la tecnología actual promueve intensamente el trabajo en equipo y la colaboración entre grupos. Por supuesto, el análisis apropiado del entorno y la utilización de las herramientas adecuadas pueden garantizar una administración sana y controlada de los proyectos en su equipo de trabajo.

Subversion, también conocido con las siglas SVN, es un sistema de control de versiones que permite administrar las versiones (valga la redundancia) de los archivos de un proyecto, promoviendo con esto la colaboración entre los miembros de un equipo de trabajo y, de una manera muy cómoda, coordinar las tareas entre ellos.

La herramienta permite acceso a los archivos de un proyecto, observar el trabajo, realizar cambios y guardar estos cambios en su repositorio, donde se almacenan todos los archivos involucrados. Al finalizar una acción de guardar cambios, se considera que se ha creado una nueva “revisión”.

Visibilidad del cambio

En términos de visibilidad, facilita mantener involucrada a cada persona de su equipo en el proyecto, ya que los cambios son visibles para todos una vez que son realizados.

Cada persona utiliza la herramienta de una manera diferente. A algunos les gusta guardar los cambios en el repositorio varias veces al día, otros prefieren trabajar en sus proyectos y solamente guardar los cambios al final de la jornada. Mucho de ello depende del tipo de proyecto en el que se esté trabajando, la etapa del ciclo de vida en la que se encuentre y si son pocas o muchas las personas involucradas. La recomendación siempre ha sido de guardar los cambios en el repositorio al menos una vez al día.

También ayuda a medir la calidad y cantidad del trabajo realizado en una unidad de tiempo. Esta visibilidad instantánea nos permite observar la productividad del equipo de trabajo, así como los beneficios a escala administrativa para un líder de grupo.

La selección de las herramientas adecuadas que interactúan con Subversion puede tener un impacto importante en el desarrollo de los proyectos e incidir grandemente en la facilidad de uso y comprensión, así como el tiempo invertido en funciones que no son específicas del proyecto. Esto debido a que Subversion también puede ser utilizado directamente con los comandos desde la consola que, si bien es cierto, brinda el mayor control de los repositorios, a la vez implica que la curva de aprendizaje sea alta.

Características

Este software lleva a cabo el proceso de guardar los cambios, llamado comúnmente como commit, en un repositorio de manera atómica es decir, dicho proceso se realiza de manera completa o no se realiza del todo. Esto permite deshacer un proceso guardado en caso de que ocurran problemas durante dicha tarea, lo que significa que si el proceso de guardado de cambios es interrumpido por alguna razón, no provocará inconsistencias en el repositorio.

Entre los métodos más conocidos para acceder a los repositorios, podemos enumerar:

  • Servidor Web de Apache mediante la utilización del módulo WebDAV (http y https).
  • Servicio svnserve, propio de Subversion, que permite también el acceso mediante una conexión segura establecida con el protocolo SSH.
  • Acceso utilizando direcciones tipo URL, directos en caso de que el repositorio resida en la máquina local (por ejemplo: file:///).

Versión a versión

Con respecto a las diferencias de versión a versión, utiliza un algoritmo de diferenciación binaria cuando almacena el historial de versiones, el cual trabaja igual tanto en archivos de texto como archivos binarios. Esto significa que utiliza exactamente el mismo proceso para “versionar” cualquiera de estos tipos de archivos. Cabe destacar que Subversion guardará únicamente las diferencias de una versión a otra en el servidor, en contraposición con sistemas como CVS que, para cada versión, hace una copia completa del archivo original.

Subversion fue hecho para ser eficiente, tanto en una red como en el propio medio de almacenamiento donde residen los repositorios, hace lo posible por enviar la menor cantidad de información a través de la red, así como la que guarda en el disco duro cada vez que se lleva a cabo un proceso de guardado, logrando enviar únicamente las diferencias que han existentes desde la última versión registrada.

Con esto, podemos decir que el costo de cada proceso de guardado es proporcional al tamaño del cambio y no al tamaño de los archivos, convirtiéndose en una ventaja significativa con respecto a otros sistemas de control de versiones.

Existe una amplia gama de aplicaciones cliente que interactúan con Subversion, con lo cual usted tiene la oportunidad de elegir la aplicación que más se ajusta a las necesidades de su entorno.

Subversion y los diferentes actores

Ahora, es importante considerar a Subversion desde la perspectiva de los usuarios que interactúan con él y que se encuentran involucrados en cada uno de los proyectos.

En un caso común, podríamos tener en el entorno de un proyecto a:

  • El equipo de desarrolladores.
  • El administrador del proyecto.
  • El administrador del repositorio de Subversión.
  • El administrador de la red.
  • Desarrollo

Los desarrolladores se encuentran relacionados con este software debido a que el trabajo realizado se refleja en los cambios y versiones que se guardan en el repositorio. Esto implica que ellos necesitan tener la capacidad de ubicar los recursos, comparar las diferencias entre versiones y trabajar en distintos proyectos simultáneamente.

Es necesario rescatar que la flexibilidad provista a los desarrolladores consiste en que pueden escoger libremente la aplicación cliente por utilizar. El equipo de desarrollo puede elegir la metodología deseada en el flujo de su trabajo al interactuar con un repositorio, permitiéndoles utilizar su propia estrategia y proceso de desarrollo.

Más allá de la típica interacción con el repositorio durante el proceso de desarrollo, los desarrolladores necesitan saber quién realizó los cambios o quién borró determinado archivo, poder regresar a una versión anterior de un archivo o carpeta, revertir los cambios actuales a la última revisión del código, entre otro diverso conjunto de operaciones, dependiendo de la metodología escogida para trabajar.

Administración

Este software permite al ad
ministrador del proyecto observar la productividad de su equipo de trabajo, así como visualizar el historial de cambios de un producto, permitiendo una mejor administración. Esto también le da la opción de trabajar en múltiples secciones de forma paralela, dentro del mismo proyecto, mediante las ramificaciones que maneja.

La simplicidad tampoco puede quedar de lado para el administrador del proyecto, ya que este no necesita conocer a fondo la herramienta de “versionamiento” utilizada para interactuar con ella de manera fácil y simple.

En cuanto al administrador del repositorio, le resulta importarle no solo la gestión del repositorio, también la administración de los permisos de acceso al mismo.

La flexibilidad de Subversion otorga al administrador de los repositorios la elección propia de la estructura y diseño del repositorio por utilizar en cada proyecto.

Respecto a los permisos, el administrador puede escoger el esquema que más se ajuste a su entorno de trabajo, que depende del protocolo de acceso que esté utilizando para sus repositorios. Adicionalmente, las herramientas y métodos que provee para llevar a cabo el respaldo y restauración de repositorios son realmente simples de utilizar.

Finalmente, el administrador de la red, en la cual se usa este software, ve facilitado su trabajo debido a las capacidades de este sistema de control de versiones, ya que se podrá acceder a un repositorio aunque se encuentre detrás de un firewall o un proxy, sin tener que crear reglas de acceso o abrir los puertos en el hardware de red.

Debido a que nos es intrusivo, puede ser instalado sin requerir ajustes específicos a la red del entorno de trabajo, por lo que puede ser implementado de una manera muy fácil y segura.

Experiencias con Subversion en Proyectos Web

En el caso específico de InterGraphicDESIGNS, nuestros proyectos demandan la colaboración interdisciplinaria de profesionales en el campo de la informática (edición de archivos de texto, por lo general PHP), así como de diseñadores gráficos (también edición de archivos de texto HTML, CSS y Javascript, entre otros).

Esto hace de Subversion una herramienta ideal para el control de versiones, pues permite mantener en repositorios, relativamente pequeños, gran cantidad de información acerca de las mejoras realizadas a los proyectos Web de nuestros clientes, comentarios de nuestro equipo de trabajo para cada cambio realizado, entre otros.

Los beneficios que hemos experimentado son una mejora en el tiempo de desarrollo, debido a la minimización de posibles retrasos causados por una mala administración de versiones, minimizamos los riesgos de pérdida de datos, centralizamos de una forma flexible gran cantidad de conocimiento sobre cada proyecto, entre otros.

Nuestra experiencia también ha sido útil al demostrar en la práctica que el tema del control de versiones no es exclusivo de profesionales en el área de informática, sino que, con la debida capacitación, es totalmente aplicable para otras disciplinas profesionales.

Etiquetas: , , ,