Introducción a los sistemas de control de versiones

Es posible que a la hora de actualizar los documentos que se vea algo como esto: index-v12-old2.html. Otras cosa que suele suceder frecuentemente es que perdemos algunos cambios que hayamos hecho o incluso hasta que a la hora de agregar algo de código arruinemos un sitio web. Con los sistemas de control de versiones vamos a alejarnos de estas practicas o sucesos e introducirnos en algo que no sólo le permitirá controlar su código fuente y los archivos, si no también a que seamos más productivos al trabajar en equipo.

¿Qué son?

Un sistema de control de versiones es una aplicación especial que almacena y gestiona todas las diferentes versiones de los archivos y el código. Muchos desarrolladores y organizaciones utilizan el control de versiones para colaborar en el código fuente, gestionar versiones, y hacer retroceder a las versiones anteriores cuando se descubren errores.

¿Por qué usarlos?

Si tenemos un sitio web o una aplicación basada en la web, nuestros usuarios confían en su contenido va estar disponible. Es necesario mantener su contenido actualizado. Sin embargo, cambiar su contenido puede dar lugar a errores imprevistos, que a su vez puede provocar que el sitio o aplicación no puedan accederse. Se necesita una manera de proteger nuestro código y archivos a través de cambios, para probar las actualizaciones antes de que se publiquen, y para volver a una versión anterior si algo sale mal.

Funcionan como un sistema de almacenamiento de archivos que rastrea todos los cambios realizados en un archivo y nos permite revertir estos cambios. Por ejemplo, si es que estaba editando un archivo en su computador y decidió eliminar una sección de código, se puede utilizar el control de versiones para restaurar esa sección de código en el futuro, incluso semanas o meses a partir de ahora.

El control de versiones es también una gran herramienta para personas que necesitan trabajar en los mismos archivos al mismo tiempo. Con el control de versiones, pueden descargar el repositorio y luego guardar los cambios cuando haya terminado. Si dos individuos han modificado el mismo archivo, el sistema de control de versiones por lo general puede combinar los cambios, a menos que haya un conflicto, en cuyo caso el usuario tendrá que combinar manualmente los cambios o favorecer a un cambio sobre el otro.

El control de versiones también hace que sea fácil de seguir los cambios. Se puede ver quien guardo el código, y por qué. Y si comenzamos a trabajar en una nueva versión de su sitio web o aplicación, se puede pasar una copia de su código a un área separada. (Este se puede agregar más adelante en el repositorio). En resumen, el control de versiones es seguro contra los errores humanos y desastres imprevisibles.

Tipos de sistemas de control de versiones

Locales

El método de control de versiones de muchas personas es copiar los archivos a otro directorio (quizás un directorio con marca de tiempo, si son inteligentes). Este enfoque es muy común, ya que es tan simple, pero también es muy propenso a errores. Es fácil olvidar en qué directorio se está y accidentalmente escribir en el archivo equivocado o copiar sobre los archivos incorrectos.

Para hacer frente a este problema, los programadores desarrollaron hace mucho controles de versiones locales que tenían una base de datos simple que mantiene todos los cambios a los archivos bajo control de versiones.

Centralizados

La siguiente cuestión importante que la gente encuentra que necesitan colaborar con otros desarrolladores. Para hacer frente a este problema, se han desarrollado sistemas centralizados de control de versiones. Estos sistemas, como CVS, Subversion, y Perforce, tienen un único servidor que contiene todos los archivos versionados, y un número de clientes que da un vistazo a los archivos de ese lugar central. Durante muchos años, este ha sido el estándar para el control de versiones.

Esta configuración ofrece muchas ventajas, especialmente con respecto al versionamiento local. Por ejemplo, todo el mundo sabe en cierta medida lo que todos los demás en el proyecto están haciendo. Los administradores tienen un control preciso sobre quién puede hacer qué; y es mucho más fácil de administrar un CVC de lo que es para hacer frente a las bases de datos locales en cada persona.

Sin embargo, esta configuración también tiene algunas desventajas serias. El más obvio es el punto único de fallo que representa el servidor centralizado. Si ese servidor se cae durante una hora, a continuación, durante esa hora nadie puede colaborar en absoluto, o guardar los cambios versionados a lo que están trabajando. Si el disco duro de la base de datos central está en se daña, y las copias de seguridad adecuadas no se han guardado, se pierde absolutamente todo, toda la historia del proyecto, salvo que sea un pantallazo que la gente pueda tener en sus equipos locales. Los sistemas de control de versiones locales sufren de este mismo problema, cada vez que tengamos todo el historial del proyecto en un solo lugar, nos arriesgamos a perder todo.

Distribuidos

Aquí es donde entran los sistemas de control de versiones distribuido como Git, Mercurial, bazar o Darcs. En estos sistemas los personas no sólo pueden ver la ultima versión de los archivos, si no que reflejan plenamente el repositorio. Por lo tanto, si cualquier servidor muere, y estos sistemas se colabora a través de él, cualquiera de los repositorios de cliente se puede copiar una copia de seguridad al servidor para restaurarlo. Cada clon es realmente una copia de seguridad completa de todos los datos.

Para efectos de este curso estaremos haciendo uso del sistema de versionamiento Git. Este es uno de los sistemas más usados en proyectos web, debido a ser opensource y que cuenta con una gran versatilidad.

results matching ""

    No results matching ""