Control de versiones si trabajas solo

david albiol con varias pantallas

En un entorno cooperativo en el que muchas personas están trabajando en el mismo proyecto, el control de versiones es una herramienta que no se cuestiona. Permite que el proyecto evolucione de manera adecuada.

Hace que sea sencillo averiguar qué cambio en qué archivo del proyecto, quién hizo los cambios, porqué, qué es lo que había antes, etc..

Pero, cuando uno trabaja solo ¿es también necesario?

Ventajas que te aporta el control de versiones si trabajas solo

Cuando uno trabaja sólo es igualmente necesario utilizar algún tipo de herramienta de control de versiones. Esto nos va a facilitar el trabajo, porque nos permite – y nos obliga- a organizar mejor la información de nuestros proyectos sin quitarnos demasiado tiempo.

Además de «controlar los cambios qué se van produciendo a lo largo del ciclo desarrollo» implementar/utilizar una herramienta de control de versiones introduce una serie de mejoras en nuestro flujo de trabajo:

  • nos obligar en cierto modo a guardar los archivos de los proyectos de manera ordenada (en el mismo lugar). Dejamos de ir guardando la información en una estructura de carpetas arbitraria, en equipos diferentes,etc..
  • hace que tendamos a nombrar los proyectos de una manera más o menos sistemática lo cuál luego facilita mucho su organización, la puesta en marcha de uno nuevo, encontrar ese proyecto que hicimos hace 5 años..
  • facilita las tareas de backup de los proyectos. Esto en el caso que instalemos en algún equipo nuestro el servidor del software de versiones, porque normalmente guardará los repositorios en una única carpeta o similar. Haciendo una copia de esa carpeta en un soporte de almacenamiento externo o en la nube, automáticamente tendremos un backup actualizado (e histórico) de nuestros proyectos.
  • Facilita el trabajo desde diferentes máquinas. Este es un punto muy interesante. Al poder descargar el repositorio o en diferentes equipos es relativamente fácil – lógicamente depende de muchas más cosas, que asumimos están configuradas de la manera adecuada- trabajar desde un varios equipos diferentes, siempre y cuando se haga los push/pull correspondientes para descargar o subir los cambios que vayamos haciendo.

¿Supone mucho esfuerzo empezar a utilizar control de versiones?

La respuesta rápida es NO. No supone mucho esfuerzo empezar a utilizar el control de versiones.

Estoy asumiendo aquí que la persona a la que me dirijo tiene un perfil técnico medio, con conocimientos de programación y algo de administración de servidores.

En cualquier caso, de no ser así, existen conocidas herramientas de pago que pueden utilizarse a este respecto y que minimizan los conocimientos necesarios para poder utlilizar sistemas de los referidos.

El principal esfuerzo para empezar a trabajar con control de versiones es el de concienciarse y ser capaz de organizar un poco los archivos de los proyectos que tuvieras antes.

David Albiol Pedregal

A partir de aquí a grandes rasgos, hay que o bien utilizar alguna de las herramientas comerciales , gratuitas o comerciales y gratuitas (por ejemplo GitHub ) en la nube, o bien montar tu propio servidor de control de versiones.

En mi caso he optado siempre por la segunda opción, porque me gusta tener el control físico de los archivos de los proyectos de mis clientes, porque es bastante sencillo y mucho más económico.

¿Que sistema aprender y utilizar? GIT

Existen múltiples sistemas/herramientas de control de versiones, centralizados (Svn) y distribuidos (GIT), gratis y de pago, pero a día de hoy el estándar de facto es GIT.

GIT es un sistema de control de versiones distribuido gratuito de amplia difusión.

No se trata de que no haya que valorar o explorar otras opciones, se trata de que el uso de este es tan amplio, está tan bien documentado y tiene un manejo tan sencillo e intuitivo que el primer paso incluso para explorar otras opciones es aprender esta.

Si me apuras, quizá valiera la pena leer o probar algún sistema de versiones centralizado como Subversión – que es complemtamente intuitivo-, pero la opción a medio/largo plazo es GIT.

Por tanto a este respecto, no hay duda alguna. El sistema de control de versiones que debes aprender es GIT.

¿Qué opción de control de versiones recomiendo para instalártela tú mismo?

Hay muchas opciones. A mi la que más útil me ha parecido y utilizo es Gogs (más información y descarga gratuita en https://gogs.io/).

Básicamente es un servidor de repositorios GIT que te instalas en tu máquina.

Tiene una serie de características adicionales que son muy interesantes – más allá del propio control de versiones y de que funciones perfectamente – cómo son la Wiki que puedes asociar a cada proyecto y en la que puedes incorporar información en páginas HTML , las ayudas para descargar los repositorios, la gestión de usuarios…

Yo la utilizo diariamente desde hace varios años y funciona perfectamente.

Resumen del artículo, faqs

Aunque trabajes sólo y tu ámbito de trabajo no sea la programación estrictamente hablando, es muy recomendable utilizar algún sistema de control de versiones (yo recomiendo GIT instalando para ello Gogs en alguna máquina que tengas o probar GitHub) para mantener tus datos organizados y accesibles.

Es recomendable utilizar control de versiones aunque trabajes solo

Sí. Ayuda a tener la información organizada de manera adecuada, a poder realizar un seguimiento de los cambios realizados y a sistematizar la información asociada a los proyectos.

Qué sistema de control de versiones recomiendas

Recomiendo GIT como sistemas de control de versiones porque es el más extendido. Además a nivel de servidor recomiendo utilizar GOGs para montar un servidor de repositorios propio y sencillo de mantener

Es la cuerva de aprendizaje muy grande para trabajar con sistemas de control de versiones

Inicialmente puede ser algo costoso empezar a trabajar con este tipo de sistemas, por lo que conviene estudiar bien la situación y hacer pruebas para sentirse con la confianza necesaria para trabajar de manera continua y sistemática con un sistema de control de versiones.