64. ¿Qué es un repositorio de código?

Un repositorio de código es básicamente un lugar donde guardamos el código de nuestra aplicación. Desde ahí podemos tenerlo almacenado y distribuirlo a las personas que necesiten trabajar en él.

Por ejemplo, nuestro ordenador o un disco duro externo podría ser una especie de repositorio. Podemos tenerlo guardado y podemos enviarlo a otras personas a través de mail en un archivo comprimido.

Sin embargo, estas opciones quizás no sean las mejores para almacenar nuestro código como veremos más adelante.

¿Qué debe tener un buen repositorio de código?

Un buen repositorio de código debe tener una serie de “extras” que nos permitan solucionar algunos de los problemas que generan los que hemos comentado hasta ahora.

1. Servidor

En primer lugar, nuestro repositorio debería estar almacenado en un servidor. La principal razón para guardar nuestro código en un servidor es la seguridad.

Debemos tener en cuenta que los servidores generalmente están en instalaciones especialmente diseñadas para mantenerlos seguros. No es fácil que ocurra un accidente dentro de una instalación de servidores.

Además, siempre tenemos la opción de hacer copias de seguridad de todo lo que tenemos almacenado en otros servidores. De esta forma es casi imposible que perdamos archivos almacenados en un servidor sin tener una forma de recuperarlos.

2. VCS (Sistema de control de versiones)

El segundo aspecto que un buen repositorio de código debe tener es un control de versiones.

¿Qué es un control de versiones? Es una especie de programa que gestiona todo lo que se almacena dentro de nuestro repositorio.

A través de un control de versiones podemos hacer cosas como ver el historial de todos los cambios en nuestro código, revertir cambios y, quizás lo más importante, nos permite trabajar en paralelo a varias personas sobre los mismos archivos.

Bien, hasta aquí hemos visto qué debe tener un buen repositorio. No te preocupes si no acabas de entender el por que de todos estos “extra” porque los vamos a ver continuación 🙂

Las ventajas de los “buenos” repositorios de código

Ahora que hemos visto qué tiene que tener un buen repositorio de código, vamos a ver qué ventajas específicas nos ofrecen. Dicho de otra manera, vamos a ver por qué NO deberías guardar el código de tu aplicación en un archivo comprimido en tu ordenador.

1. Seguridad

Como ya hemos comentado antes, un servidor ofrece mucha más seguridad.

Un ordenador normal y corriente o un disco duro pueden dejar de funcionar en cualquier momento. Hay muchas razones que nos pueden llevar a perder nuestro código de forma irremediable.

Sobre este mismo concepto se basa el almacenaje en la nube. Es mucho más seguro guardar tus archivos en Google Drive o soluciones parecidas que hacerlo de forma local en tu ordenador.

Teniendo nuestro código en cualquier servidor es casi imposible que lo perdamos. A no ser claro, que lo eliminemos nosotros y hagamos lo mismo con las copias de seguridad.

2. Trabajar en paralelo

Este es quizás uno de los puntos más importantes.

¿Qué pasa si varias personas a la vez tienen que trabajar sobre el mismo código? Esto es algo que pasa muy habitualmente en cualquier tipo de aplicación cuando se hace grande.

Si lo que tenemos es un simple archivo comprimido es totalmente imposible. Si dos programadores cambian el mismo archivo a la vez en su copia del código que les hemos pasado, ¿cómo vamos a saber qué versión es la buena? No podemos fusionar los cambios de ambos programadores. La única solución es que solo un único programador trabaje sobre el código.

Esto es algo completamente inviable si queremos escalar nuestra aplicación. Va a llegar un punto en el que serán necesarias varias personas a la vez trabajando sobre los mismos archivos.

Gracias al control de versiones que hemos comentado antes, esto es posible.

El control de versiones nos permite, entre otras cosas, gestionar los posibles conflictos que hayan entre los cambios en un mismo fichero. El programador está obligado a solucionar cualquier tipo de conflicto en los archivos antes de guardar el código.

3. Historial de cambios

Si guardamos nuestro código en una simple carpeta nunca vamos a poder ver los cambios a lo largo del tiempo. Siempre vamos a tener una única versión de nuestro código.

¿Qué pasa si de repente si introduce un error? ¿Podemos volver hacia atrás? Con un control de versiones sí que podemos.

Podemos volver atrás en el tiempo o revertir únicamente aquellos cambios que por cualquier motivo no nos interesen.

4. Contexto

El historial de cambios que nos proporciona el control de versiones nos permite entender el contexto de la aplicación. Nos permite entender qué ha ido pasando, quién ha ido haciendo los cambios y por qué los ha hecho. Esto es especialmente útil para los nuevos programadores que tienen que modificar el código escrito por otras personas.

Con el control de versiones, los programadores están obligados a introducir una pequeña descripción de los cambios que han hecho. De esta manera obtenemos una serie de entradas que nos permiten saber quién, por qué y cuándo modificó ciertas partes del código.

¿Qué alternativas podemos utilizar?

Si queremos utilizar un buen repositorio de código con control de versiones y alojarlo en un servidor, tenemos básicamente dos opciones: gestionarlo nosotros mismos o utilizar un servicio existente.

La primera opción quizás sea la más compleja. En primer lugar necesitaremos tener un servidor propio. Una vez lo tengamos, tendremos que instalar el sistema de control de versiones que se adecue mejor a nuestras necesidades y finalmente subir el código.

La segunda opción es más sencilla y es mi favorita. Tenemos la opción de elegir un servicio que nos gestione todo lo anterior. Nosotros únicamente tendremos que crear una cuenta, crear el proyecto y listo. Tendremos un lugar donde almacenar nuestro código y gestionarlo. Quizás la más popular hoy en día es Github.

Conclusión

En resumen, un buen repositorio de código nos ofrece seguridad, nos permite trabajar en paralelo a varias personas, podemos mantener un historial de cambios y además nos ayuda a entender mejor cada cambio que se ha producido.

Sin duda es algo básico y vital para el software. Así que si tienes una aplicación o cualquier otro tipo de programa, deberías siempre tener un repositorio de código que te permitiera tener todos estos beneficios. Hoy en día como digo es algo elemental.

Como siempre sabes que puedes seguir y recomendar este podcast a través de iOS y Android. También puedes ponerte en contacto conmigo a través de mi formulario de contacto para cualquier duda o sugerencia. ¡Nos escuchamos el miércoles que viene a las 8AM!