La importancia del control de versiones

Un controlador de versiones es un sistema que nos permite guardar un registro de las modificaciones que realizamos sobre un fichero a lo largo del tiempo. Habitualmente se utiliza en entornos de desarrollo de software, pero puede resultar de gran utilidad para cualquier persona que necesite un control robusto sobre la tarea que está realizando. La mayoría de la gente utilizamos algún sistema de control de versiones sin ser conscientes de ello. El ejemplo más claro es cuando editamos cualquier tipo de fichero en servicios de almacenamiento en “la nube” como Google Drive o Dropbox.

Pero, ¿por qué es importante utilizar un sistema de control de versiones? Hace unos días un amigo me contaba la forma que tienen en su empresa (cuyo nombre no desvelaremos) de realizar el control de versiones. Cada vez que modifican un archivo lo guardan con el sufijo “copia-XX” –siendo “XX” el número de modificación por el que van–, por lo que acaban teniendo cientos de ficheros iguales pero con pequeñas modificaciones. La calidad de vida de los trabajadores de esta empresa mejoraría drásticamente si utilizasen un sistema de control de versiones…

Cartel que indica los comandos a ejecutar antes de salir por la puerta en caso de incendio
Cartel que indica los comandos a ejecutar antes de salir por la puerta en caso de incendio. Source: Wikimedia

Gracias a los sistemas de control de versiones más potentes –como Git–, conseguimos muchas ventajas. A continuación enuncio las que considero más relevantes:

  • Acceso al registro de modificaciones sobre un fichero. Esto nos permite además ver los comentarios asociados a cada modificación y la persona que ha realizado dicha modificación
  • Posibilidad de regresar al estado anterior de un fichero o conjunto de ficheros
  • Creación de ramas para gestionar cambios que finalmente se mezclarán con la rama principal
  • Facilidad para etiquetar modificaciones concretas. Esto además, acaba desembocando en un DML de ITIL, con lo que conseguimos un repositorio con todas las releases del producto

Pero podemos encontrar en ellos muchas otras utilidades. Tienen mecanismos que nos permiten buscar los cambios que han introducido un fallo en el código, lo que acorta mucho la depuración de los programas. Además, debido a su carácter distribuido resulta poco probable que se produzca cualquier pérdida de código.

Linus Torvalds, creador de Linux y Git
Linus Torvalds, creador de Linux y Git. Source: Wikimedia

Como anécdota resulta curioso que incluso Microsoft, que a pesar de que últimamente está realizando más contribuciones al software libre, tradicionalmente ha sido promotor del software privativo, utilice Git como sistema de control de versiones para el desarrollo de su próxima versión de Windows. Para los que no lo sepan, Git fue desarrollado por el creador de Linux para el mantenimiento del kernel.

En Sciling llevamos tiempo utilizando la plataforma GitLab para gestionar nuestros repositorios de código y podemos decir que estamos más que contentos. Así que ya sabéis. Si queréis disfrutar de todas las ventajas que ofrecen los sistemas de control de versiones y no queréis volveros locos versionando manualmente los ficheros que editais, ¿a qué esperáis para empezar a utilizarlos?