Hay cierta confusión en lo que se refiere a lo que es un sistema de control de versiones, ya que , probablemente habremos oido hablar acerca de Github, git, bitbucket, SourceSafe, Mercurial …Pero ¿Qué es exactamente un sistema de control de versiones?
¿Qué es un Sistema Control de Versiones?
Un sistema de control de versiones es aquel que nos permite registrar los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo. Este tipo de sistemas nos permiten volver en el tiempo a una versión anterior y, de este modo, salvar nuestro trabajo o recuperar una versión anterior de un archivo en concreto. Además no solo nos permite poder llevar un seguimiento de nuestros archivos en el tiempo, sino también, y esto es realmente importante cuando trabajamos en equipo, nos permiten llevar un seguimiento de quien ha hecho dichos cambios y de que es lo que ha cambiado, algo extremadamente útil en proyectos en los que colaboramos con mas personas.
Ventajas de usar un sistema de control de versiones
Usar un sistema de control de versiones no solo nos va a permitir colaborar con otras personas en distintos proyectos en los que estemos trabajando, sino que también nos va a dar una gran tranquilidad a la hora de trabajar, ya que si integramos un sistema de control de versiones en nuestro flujo de trabajo (workflow) podremos tener una gran tranquilidad en caso de perdidas de datos de nuestro ordenador o discos duros, ya que nuestros archivos estarán a salvo en todo momento, no solo a salvo, sino que , como comentamos, dispondremos de un histórico de cambios.
En cuanto al histórico de cambios, si utilizamos un sistema de control de versiones, podremos obtener un seguimiento de nuestros archivos a lo largo del tiempo, y no solo saber que cambios se han realizado en algunos archivos en concreto, sino saber cuando y quien realizo dichos cambios. Pudiendo siempre que lo necesitemos volver a una versión anterior de los mismos.
Otra de las ventajas que nos ofrece un sistema de control de versiones es que podemos volver a una versión anterior con mucha facilidad, algo que es muy útil cuando por ejemplo queremos comprobar ciertas funcionalidades que hemos añadido a nuestro proyecto y , de repente, vemos que en la nueva version el comportamiento es distinto al anterior. De esta forma podemos volver a la versión anterior que teníamos funcionando correctamente y ver de que forma los nuevos cambios han «estropeado» un comportamiento que inicialmente erra el esperado 🙂
Una ventaja muy utilizada es la de poder crear pruebas con nuevas funcionalidades sin tener que tener por si no funcionarán como esperamos. Podemos crear una nueva version, probar los cambios que queramos realizar, y una vez probados y comprobados continuar el desarrollo desde ese punto. En el caso que no sea lo que esperamos, siempre podemos volver a una versión anterior.
Algo muy extendido es el trabajo en equipo, en la que cada miembro del mismo desarrolla una parte del proyecto. Gracias a un sistema de control de versiones podemos estar seguros que todos los miembros del equipo tendrán las versiones actualizadas de las diferentes partes del proyecto, algo que agiliza mucho la forma de trabajar, sobretodo en proyectos grandes.
Cuando trabajamos con mas personas en un proyecto, gracias a integrar en nuestro workflow un sistema de control de versiones, nos permite reducir los posibles conflictos entre las diferentes partes de un proyecto, ya que al utilizar un sistema de control de versiones podemos prevenir que un usuario «pise» ciertos archivos en los que este trabajando otro usuario. De esta forma podemos tener mejor organizado a nuestro equipo delegando ciertas tareas a cada una de las partes teniendo la tranquilidad de que todos los miembros trabajarán con la ultima versión de los archivos.
Herramientas de control de versiones
Hemos visto que es un sistema de control de versiones, pero en muchas ocasiones se cree que este es implemente la herramienta que utilizamos para ello. En el caso de github o bitbucket , ambas son muy buenas opciones para trabajar y para levar un control de versiones, , ademas de estar muy extendidas, pero estas herramientas no son en sí un sistema de control de versiones. En realidad ambas herramientas trabajan con git , que ya es propiamente el software de control de versiones. Git además de ser una gran opción para llevar un control de versiones, es un software libre de control de versiones diseñado por Linus Torvals. con lo que se ha convertido en un standard a la hora de trabajar en el mundo del desarrollo. Herramientas con Xcode y Android Studio también integran Git, siendo muy sencillo gestionar nuestros proyectos de desarrollo de aplicaciones.
Conclusión
Como hemos visto, utilizar un sistema de control de versiones en nuestro día a día nos va a ayudar en nuestra jornada como desarrolladores, ya no solo para poder integrar nuestro trabajo con un equipo de personas, sino también para darnos ese grado de tranquilidad al saber que nuestros archivos están a salvo, además de saber que podremos tener guardados todos esos cambios en el tiempo para , cuando lo necesitemos, poder ir a una versión en concreto.