Bash, git y mucha vergüenza

Esto es un post de vergüenza absoluta para mí, que nunca he usado bash, pero todo hay que visibilizarlo… Y lo mismo le resulta útil a alguien. La cosa viene así, tengo un script de bash en un repositorio A, cuyas órdenes son: 1) ir al repositorio B y 2)realizar una operación concreta:

cd ../../repositorio/b
git reset --hard

Efectivamente, git reset –hard. Para quien no sepa nada de git, esto normalmente significa muerte y destrucción, con variantes del tipo con mucho dolor, o con napalm o y tu madre viene a verte sin avisar. Es decir, ojito cuidado.

Pues resulta que dado el código anterior, si la orden “cd…” falla, el script sigue ejecutando las siguientes órdenes. Significa que si por algún motivo yo no programé bien ese “cd…”, igualmente hace la segunda operación. Casualmente, el script está en un repositorio donde le ha parecido perfecto ejecutar esa orden.

Ya os imaginaréis que había puesto mal el “cd…”. Así que en un segundo, he visto cómo en mi repositorio (el importante, no podría ser de otra forma), se iban todos mis (muchos) cambios al garete.

Esto es git personificado gritando:
Esto es git personificado gritando: "A mi señal, ¡¡ira y fuego!!"

¿Que por qué no los había commiteado? Pues tengo un montón de razones que lo justifican, pero lo cierto es que no… injustificable. Encima yo suelo hacer commits pequeños, pero aquí me lié con varias cosas… y nada, que no había commits.

¡Sin embargo! Este post tiene final feliz… gracias a nuestro super turbo peta tera experto en git, Jesús Espino, que la barba le crezca larga, y a que había stasheado los cambios en cierto momento (aunque el stash ya no existía para entonces), he podido recuperar los cambios. Y Jesús se ha quedado como…

El éxito se le ha subido a la cabeza...
El éxito se le ha subido a la cabeza...

Bien, ¿y cómo tendría que haber hecho el código inicial para que funcionara correctamente?

cd ../../repositorio/b && git reset --hard

De esta forma, si falla la primera instrucción no se ejecuta la segunda… #ay

Conclusión: a mi mantra de los lunes, de no tomar decisiones importantes añadiré otro:

… ni hagas scripts de bash

comments powered by Disqus