Informática a Distancia: Control de Versiones

Autor: Erick J. Arrechedera / Centro de Seguridad Informática y Certificación Electrónica (CSICE).FIIIDT.

 

Introducción

En estos tiempos donde la tecnología se apodera de la mayoría de procesos de la vida cotidiana, además del confinamiento existente debido al COVID-19 que sugiere mantener distancia para contrarrestar la pandemia, debemos tener alternativas a la hora de continuar con nuestros proyectos y desarrollos de nuevas ideas.

Una de ellas es poder contar con un sistema que maneje el histórico de nuestro trabajo, para así evitar la pérdida de información, además de facilitar la integración del mismo con el de los demás integrantes del equipo de trabajo (si fuese el caso). Para esto existen sistemas denominados “Control de Versiones”, del cual hablaremos a continuación.

Lo primero que debemos saber: ¿Qué es un Control de Versiones, y por qué es importante?

Un control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante, es un software que permite mantener un histórico de las distintas versiones de un desarrollo.

Este sistema básicamente y a grandes rasgos, consiste en almacenar copias de los ficheros que contienen el código fuente del proyecto en cada uno de sus estados. Esto permite, por ejemplo, tener siempre a mano el código fuente disponible de un programa, en cada una de sus versiones y/o en una fecha concreta.

Si eres diseñador gráfico o desarrollador de software, seguro querrás mantener cada versión de una imagen, diseño o programa. Para esto, usar un sistema de control de versiones (VCS por sus siglas en inglés) es una decisión muy acertada.

El sistema, permite retornar a las versiones anteriores de tus archivos, regresarte a una versión anterior del proyecto completo, hacer comparaciones de los cambios en un periodo de tiempo, verificar el autor de la última modificación realizada en algo que pueda estar causando problemas, ver quién introdujo un problema y cuándo, y mucho más.

Un sistema de control de versiones se caracteriza por:

  • Mecanismo de almacenamiento de los elementos que deba gestionar (ej. archivos de texto, imágenes, documentación, entre otros).
  • Posibilidad de realizar cambios sobre los elementos almacenados (ej. modificaciones parciales, añadir, borrar, renombrar o mover elementos).
  • Registro histórico de las acciones realizadas con cada elemento o conjunto de elementos (normalmente pudiendo volver o extraer un estado anterior del elemento).

Tipos de VCS, según su arquitectura de almacenamiento

Podemos clasificar los sistemas de control de versiones atendiendo a la arquitectura utilizada para el almacenamiento del código de la siguiente manera:

  • Centralizados: existe un repositorio centralizado de todo el código o archivos, del cual es responsable un único usuario (o conjunto de ellos). Se facilitan las tareas administrativas a cambio de reducir flexibilidad, pues todas las decisiones fuertes necesitan la aprobación del responsable. Algunos ejemplos son CVS, Subversion o Team Foundation Server.

Diagrama de control de versiones centralizado [1]

  • Distribuidos: cada usuario tiene su propio repositorio. Los distintos repositorios pueden intercambiar y mezclar revisiones entre ellos. Es frecuente el uso de un repositorio, que está normalmente disponible y sirve de punto de sincronización de los distintos repositorios locales. Ejemplos: Git y Mercurial

Diagrama de control de versiones distribuido [1]

Ventajas del uso de un Sistema de Control de Versiones

Utilizar un sistema de control de versiones tiene, entre otras, las siguientes ventajas [4]:

  • Permite mantener un histórico de todo el desarrollo del proyecto.
  • Añade trazabilidad al desarrollo de un proyecto, ya que se puede ver qué cambios se han hecho en los archivos en cada versión.
  • Muestra información estadística de cómo se está desarrollando el proyecto (principales autores, número de versiones, cambios, etc.).
  • Facilita el trabajo en equipo.
  • Permite almacenar diversas versiones de un mismo proyecto a la vez.

Inconvenientes del uso de un Sistema de Control de Versiones

Los principales inconvenientes del uso de un sistema de control de versiones son [4]:

  • Presentan una curva de aprendizaje un poco elevada.
  • Sólo se aprovechan de mejor manera si se implementa en un servidor siempre disponible.
  • Su uso sin interfaz gráfica puede resultar bastante complejo.

Conclusión

Como hemos visto, son más las ventajas que las desventajas, pero hoy en día existen muchas organizaciones que no utilizan este tipo de herramientas de tanto provecho. En muchos casos, esto es debido, a que sus empleados no están formados en el uso de las mismas.

Aunque no es estrictamente necesario su uso, los Sistema de Control de Versiones suelen ser muy útiles, además, para la generación de informes con los cambios realizados entre dos versiones, informes de estado, identificativo de un conjunto de ficheros, etc.

Usar un VCS también significa generalmente que si arruinas o pierdes archivos, será posible recuperarlos fácilmente.

Por ejemplo, en mi universidad no se enseña a usarlos y en los grados de formación profesional que conozco, tampoco.

Referencias

  1. Distributed is the new-centralized  https://git-scm.com/
  2. https://es.wikipedia.org/
  3. https://lenguajedeprogramacion.com/
  4. Ventajas del uso de un sistema de control de versiones, 2017 https://lenguajedeprogramacion.com/programacion/git-sistema-control-versiones/

 

Contacto: jefecentrocsice.1@gmail.com