
Control de versiones con Git: el Halcón del Lince, un método esencial paso a paso: chisme 77 del Lince
El Lince de la Noche tardó una noche entera en escribir el primer Halcón: despegar, avanzar, soltar agua, volver a la base… Al probarlo por primera vez, el dron se estrelló contra un pinsapo.
—¿Y no tienes la versión anterior? —preguntó la Gata Montesa.
—Guardé encima de la anterior. Y no recuerdo qué cambié.
—Pues empecemos de cero y hagámoslo bien: un método cada vez, una prueba para cada método y una copia guardada de cada versión que funcione.
Introducción
El control de versiones y el desarrollo iterativo son dos ideas que usa cualquier equipo que programa en serio. En este chisme las vas a ver funcionar con un hidrodrón simulado, el HALCÓN (Hidrodrones Aéreos del Lince contra CONatos), y con un «Git» de juguete incluido en la página. Los Centuriones de la Verdad lo usan para proteger Sierra Bermeja.
Aviso importante: todo es una simulación. Ante un fuego real se llama al 112. Ningún alumno apaga nada.
Abrir el chisme 77: El Halcón del Lince
Por qué este chisme
Casi todos escribimos programas «de golpe» y acabamos con archivos llamados final, final2 y ahora_si. Un equipo profesional hace otra cosa: construye el programa en versiones pequeñas, prueba cada una y guarda cada versión que funciona con un mensaje que explica el cambio.
Cómo funciona
La página tiene Python real ejecutándose en tu navegador (con Pyodide). A la izquierda está halcon.py; a la derecha, el Halcón en Sierra Bermeja y el panel del paso actual. En cada paso:
- Se añade un cambio al código. Las líneas nuevas aparecen en verde, como en un
git diff. - Se supera una misión con órdenes de Python que prueban el método nuevo.
- Se hace un commit con un mensaje que explica el cambio. Queda guardado en el historial.
Las cinco iteraciones
Al terminar cada paso, la página muestra un botón «Siguiente paso». En cada uno enseña el código que hay que escribir: se puede añadir con un botón o escribirlo a mano, y la página comprueba lo escrito línea a línea.
- v0.1: la clase
Halcon, con su constructor yestado(). - v0.2:
despegar(),aterrizar()yavanzar(metros). - v0.3: un fallo y su arreglo. Hay que reproducir el fallo (la batería queda negativa), corregirlo y comprobar que la misma prueba ya funciona.
- v0.4:
cargar_agua()ysoltar_agua()sobre el conato simulado. - v1.0:
volver_a_base()yapagar_conato(distancia), que reutiliza todos los métodos anteriores.
En el historial se puede pulsar «Ver cambios» para ver el diff de cada commit y «Probar esta versión» para ejecutar el código tal como era. Si pruebas la v0.1, verás que el Halcón todavía no sabe despegar.
Misión de equipo: ramas y fusión
Con la v1.0 terminada, el Lince y la Gata Montesa mejoran el Halcón a la vez, cada uno en su rama. Al fusionarlas aparece un conflicto: los dos añadieron una línea en el mismo sitio y Git no sabe cuál conservar. El archivo se llena de marcas <<<<<<<, que Python no entiende. El alumnado decide qué líneas se quedan y crea el commit de fusión.
Qué estamos viendo realmente
Git no guarda «archivos con otro nombre»: guarda el contenido de cada versión, un mensaje y la versión anterior de la que viene. En la página, el código de siete letras de cada commit imita esa idea. La simulación no sustituye a Git: para practicar de verdad se puede usar Git en el terminal y un servidor como GitHub o GitLab.
Para el aula
- Antes de cada misión, predice qué estado tendrá el dron y comprueba la predicción.
- Comparad una metodología en cascada y una iterativa: ¿qué habría pasado si el fallo de la batería se hubiera descubierto al final?
- Escribid mensajes de commit buenos y malos («cosas», «arreglado») y discutid cuál se entenderá dentro de un año.
- En parejas, simulad ramas: cada alumno modifica una línea distinta del mismo archivo y luego los dos resuelven el conflicto hablando.
- Repetid el proceso con Git de verdad en un repositorio del instituto.
Retos
- Haz que el Halcón funcione de principio a fin (v1.0).
- Prueba la v0.2 y la v0.3 con
avanzar(500)y explica la diferencia. - Escribe en papel el método
recargar_bateria()y decide en qué commit iría. - Haz que
apagar_conato()no despegue si la batería es menor del 40 %. - Crea tu propia clase de dron en Git: una versión por método.
Qué hemos aprendido
Un programa crece en iteraciones cortas: se planifica, se programa, se prueba y se corrige. El control de versiones guarda cada paso para poder volver atrás y entender qué cambió, y las ramas permiten que varias personas trabajen a la vez. Cuando dos personas tocan el mismo sitio, aparece un conflicto y alguien tiene que decidir.
Prototipo educativo de MonteSteam. Python se descarga de internet la primera vez (unos 10 MB) y después se ejecuta en tu navegador.



Etiqueta:AIDARAC, control de versiones, desarrollo iterativo, Dron, Git, ies monterroso, montesteam, python

