Herramientas del Software Libre/Sistema de control de versiones
Sistemas de control de versiones
editarNecesidad natural del control de versiones
editarCuando uno trabaja con una computadora, suele almacenar su trabajo o proyectos en una estructura de directorios que determinamos conveniente a tal fin. En la misma, creamos y editamos los archivos en cuestión... varias veces, perdiendo aquello que antes contenian. Por ejemplo, a un archivo de texto sobre una traducción o de código fuente, lo creamos y lo editamos varias veces, cada una con un propósito específico (desde corregir una frase erronea traducida varias veces a implementar una nueva característica en el código).
En el proceso que conlleva realizar un trabajo, es normal cometer errores y descubrirlos algún tiempo después de cometidos... ¿cómo recuperar aquella /version/ original del archivo? Por caso, ¿cómo volver a la traducción que traducia computer por ordenador?, o ¿cómo recuperar aquella implementación que no tenía un bug introducido luego? El sistema de archivos no vasta, no recuerda lo que guardamos antes, lo pisa con la nueva versión del archivo. Para solucionar es, y mucho más, se usa el sistema de control de versiones.
Un pasito hacia los sistemas de control de versiones
editarInicialmente partimos de una persona trabajando sola con su computadora, guarda sus archivos ordenados en una carpeta, los edita y cuando obtiene un trabajo relativamente 'prolijo', 'estable', 'terminado', hace un backup, salva esos archivos... Tal ves a un cd, o a otra carpeta llamada backup. Sigue trabajando y cuando llegue a un estado semejante hace otro back up. Si por algún motivo, se arruinan los archivos, puede volver al ultimo backup y retomar desde allí. No es un sistema de control de versiones avanzado, pero a priori es una ayuda, un primer paso.
Pero: ¿cuánto pasa entre un resultado acabado y otro? ¿cómo manejar prolijamente los backups cuando ya son 50 o más? ¿cómo mantener manejable el espacio consumido por los backups?
Mínima teoría de un sistema de control de versiones
editarPensemos de otro modo la actividad de esa persona.
No seria ideal tener un historial _pleno_ de cada cambio a esa estructura de archivos? saber cuando se creo un archivo, se movió, se le cambiado el contenido (si, cada ves que se lo modifique y guarde con otro contenido), poder comparar el contenido de un archivo consigo mismo hace un mes? o comparar el contenido de ese archivo hace un mes y quince días?
Pero pensarlo así, es pensarlo en términos de los 'pequeños cambios' que se le hizo a esa jerarquía de directorios. Por ejemplo, pensando en cuando creamos un archivo, o le escribimos contenido por primera vez, o por cada vez que lo modificamos... Todos son 'pequeños cambios'. Y son perfectamente manejables por un programa que lleve 'registro' o 'nota' de ellos. Ese programa es el sistema de control de versiones.