Durante los 70’s hasta inicios del 2000, muchos profesionales (principalmente de software) se tuvieron que enfrentar a desarrollar proyectos de forma muy pesada. Nos encontrábamos con 3 problemas:
- Proyectos difíciles de gestionar y liderar
- Riesgos a sobrescribir con mi código el avance formal del equipo
- La centralización y poca probabilidad de trabajar remotamente
A día de hoy es muy raro no encontrarse con sistemas de control de versiones (VCS) sobretodo en proyectos de uso profesional y cada vez más a nivel personal. Es común trabajar y colaborar en proyectos de otros desarrolladores con herramientas como GitHub o muchos otros sistemas a nivel privado. Incluso va siendo habitual encontrarse proyectos no relacionados con el software que utilicen VCS.
¿Qué buscan los de sistemas de control versiones?
Gestionar ágilmente proyectos. Parte de su principal propósito es que puedas regresar a un estado anterior del proyecto o conocer, incluso, toda su evolución en el tiempo. Desde sus inicios hasta donde se encuentra actualizado. Puedes ver a los SCV como máquinas del tiempo, que permiten regresar a cualquier momento que quieras de tu proyecto.
Si eres un desarrollador y te dedicas a esto de seguro te ha pasado que durante el proceso de tus desarrollos, es necesario dividir el trabajo y que cada uno de los que componen tu equipo debe desarrollar una parte de ese gran proyecto que tienen.
Entonces en vez de tener que unir archivos y códigos en un solo proyecto para integrar los trabajos Git te permite trabajar en versiones diferentes de tu proyecto para que luego puedan integrarlos de manera mucho más simple y de forma totalmente remota, y que además puedas revisar los cambios y ver quienes realizaron dichos cambios y diferenciarlos de anteriores versiones. Esto y mucho más de brinda GIT.
¿Cómo gestionan?
Su metodología está en 3 bases:
- Registran y guardan cada modificación del proyecto en un registro. Todo lo que modificas, lo vigilan.
- Te dan acceso a este registro. Con esto, puedes gestionarlo, compartirlo, colaborarlo, administrarlo, editarlo, etc.
- Podrás moverte hacia atrás o hacia adelante en diferentes versiones del proyecto.
Un SCV puede rastrear archivos HTML, CSS, JS, java, Py, entre otros, debido a que es código fuente, texto plano. En el caso de imágenes, PDF’s, Zip, también los puede rastrear, sólo que de forma binaria (Abre una imagen con Sublime Text y verás su formato en binario, así lo registra Git). Con éstos últimos, no podrás saber exactamente donde está el cambio, pero GIT puede rastrearlos y llevarlos junto al proyecto.
Git el sistema de control de versiones
Git es un software de control de versiones diseñado por Linus Torvalds (Si el mismo creador del Kernel de Linux), pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.
Sus ventajas son inumerables, pero aca te resumimos alguna de ellas:
- Distribuido, no centralizado: Git se presenta como un sistema distribuido, en el que todos los nodos manejan la información en su totalidad y por lo tanto pueden actuar de cliente o servidor en cualquier momento, es decir, se elimina el concepto de “centralizado”.
- Fotografías, no diferencias: Git replantea esta metodología y se acerca más a lo que sería el funcionamiento de un sistema de archivos, guardando a lo largo del tiempo una fotografía nueva que encierra el estado actual del archivo con todos sus cambios. Sin embargo, Git es bastante inteligente porque cuando un archivo no cambia, en lugar de guardar la misma fotografía varias veces, guarda una referencia a esa fotografía. De esta forma se optimizan los recursos del sistema.
- Git comprueba todo: así que es imposible que un archivo se corrompa o se pierda sin que lo sepa. Estás verificaciones se hacen mediante una suma de comprobación (checksum) conocida como SHA-1 y están integradas en lo más profundo de su ser. Los cambios, los archivos, casi todo es guardado en Git no por nombre, sino por la suma de comprobación de sus contenidos.
- Es rápido (y furioso): Como mencionamos más arriba, Git te permite trabajar todo localmente gracias a que es un sistema distribuido. No necesitas salir a Internet para consultar los cambios históricos y mucho menos para confirmar los cambios más recientes que has realizado, todo se realiza contra tu base de datos local. Esto permite que puedas trabajar en el tren camino a casa o mientas cruzas el Atlántico en un avión, además agiliza todas las operaciones y permite que cosas el branching, tan costosas en otros sistemas, con Git sean cuestión de milisegundos.
- Añadir pero no borrar: Otro de los principios fundamentales de Git es el de no remover información. Cuando introduces un cambio en tu proyecto simplemente añade más información al repositorio, lo que permite que sea muy difícil estropear algo por error o que no puedas deshacer esas modificaciones. Como todos los sistemas de control de versiones, con Git puedes perder información que aún no hayas confirmado, pero una vez hecho este paso, todo quedará guardado y podrás deshacerlo con toda seguridad.
Conclusiones
De alguna manera Git ha revolucionado el mundo del desarrollo de software. Si bien presenta un cambio de paradigma respecto a las soluciones más comunes, sus prestaciones valen la pena el intento. Además, es Software Libre distribuido bajo los términos de la Licencia Pública General GNU versión 2. Y tu ¿ya estás usando Git?