Pasito a pasito

Palabras clave:
Tiempo aproximado: 3 min.


Hacía tiempo que quería hacer un ejercicio interesante (al menos para mi) que consiste en hacer una codekata muy sencilla a pequeños pasos o, como dice Kent Beck en su libro “TDD: By Example“, con baby-steps. Me interesa estudiar cuáles son las fuerzas que empujan a refactorizar hacia un mejor diseño y para eso verlo en un ejercicio de laboratorio me parece ideal. En este sentido, también me interesa ver cómo se aplica la “Premisa de la Prioridad de las Transformaciones” expuesta recientemente por UncleBob.

FizzBuzz en Github (pasito a pasito)

Así pues, he creado un proyecto vacío con Jeweler (mi lenguaje de elección ha sido Ruby porque necesito practicarlo más) y he trabajado sólo en el fichero de test por simplicidad. Jeweler crea el esqueleto y te lo deja todo muy fácil para ejecutar los tests sin más que ejecutar:

rake test

De hecho, Jeweler te hace hasta el primer commit en git y lo deja listo para subirlo a github. Bueno, el resultado de este experimento lo he dejado en Github y veréis que se trata de la kata FizzBuzz, que es lo suficientemente sencilla como para no alargar demasiado el ejercicio. Si alguien tiene ganas de empezar con GitHub, también recomiendo este tutorial de primeros pasos de Adictos al Trabajo.

Así que fui haciendo commit con git para cada uno de los pasos, incluso en aquellos en los que estaba en rojo, porque la idea era tener todos los comentarios que explicaban ese paso en la historia de los commits y así, quizás algún día, tener una herramienta que me permita visualizar ese “paso a paso” a modo de slideshow.

De paso, en el camino, he puesto en práctica mi kung-fu con Git y he aprendido a:

Cambiar el comentario del último commit

Como los comentarios en este ejercicio son fundamentales, no podía permitirme que no pusieran exactamente lo que quería poner. Así que busqué y encontré esto:

git commit --amend

Esto lo que hace es proponerte el editor por defecto para modificar el mensaje del commit.

Deshacer los últimos commits

Más adelante me encontré con que había ido haciendo unas refactorizaciones que no me gustaban nada, así que quise volver atrás. Normalmente habría deshecho los cambios en el editor y hecho un nuevo commit, pero eso habría dejado un poco sucio la historia.

git reset <el hash del commit hasta el que queremos volver>

Esto nos pone apuntando justo a ese commit al que hemos hecho referencia. Si no sabéis cómo conocer el hash, “git log”, aunque hay maneras de abreviarlo y también vale. 🙂

Hacer push a github sin haber hecho clone antes

Pensaba que ya había hecho creado el repositorio en github y que había hecho clone (que es lo que se suele hacer), pero como había empezado directamente desde el esqueleto que me ofrecía Jeweler, ni me acordé de todo eso. Así que creé el repositorio en github y, claro, ya no se parecía a lo que Jeweler había dejado configurado por defecto. El nombre del proyecto en local era “fizzbuzz” y en Github era “fizzbuzz-babysteps”. Además, al hacer git push me daba un error. Así que de nuevo recurrí a Google y Stackoverflow y encontré esto otro:

git remote set-url origin git@github.com:jmbeas/fizzbuzz-babysteps.git
git push -u origin master
Algunos alias nuevos bastante útiles

La primera vez que usé Git lo hice siguiendo el tutorial GitImmersion. Allí vi que se podían definir alias muy útiles para simplificar muchas de las tareas habituales. Los amigos de Emergya también nos recomiendan algunos. En particular el hacer “commit -a” parece una tontada, pero a mi me da mucha pereza hacer “git add” todas las veces. 🙂

LA FOTO: La encontré a través de “Google images” y, la verdad, no he pedido permiso. Espero que como es bastante inocentona y no busco lucrarme, no haya ningún abogado americano que me denuncie. Si alguien tiene interés en la fuente original (la que me da Google), es ésta. Ya véis, nada interesante.