Usando git para parchear regresiones

Hay varias razones primarias por las que git me parece lo más interesante en el espacio de DSCM (Decentralized Source Code Management):

un ejemplo del último uso: el otro día encontré y reporté un bug trivial en python. Quise averiguar después de reportarlo en qué ramas de desarrollo estaba todavía presente, así que tuve que escribir la siguiente línea:

sgala@marlow ~/newcode/python.git (py3k)$ for i in $(git branch -a| sed
-e "s/\*//"); do if git rev-parse --verify $i:Include/pymath.h
>&/dev/null ;then PAGER= git grep doube $i:Include/pymath.h 2>/dev/null
; fi; done
benjaminp-testing:Include/pymath.h:extern double copysign(doube, double);
okkoto-sizeof:Include/pymath.h:extern double copysign(doube, double);
py3k-ctypes-pep3118:Include/pymath.h:extern double copysign(doube, double);
py3k-urllib:Include/pymath.h:extern double copysign(doube, double);
tags/r26a3:Include/pymath.h:extern double copysign(doube, double);
tags/r26b1:Include/pymath.h:extern double copysign(doube, double);
tags/r26b2:Include/pymath.h:extern double copysign(doube, double);
tags/r30a5:Include/pymath.h:extern double copysign(doube, double);
tags/r30a5-real:Include/pymath.h:extern double copysign(doube, double);
tags/r30a5-real@62867:Include/pymath.h:extern double copysign(doube,
double);
tags/r30b1:Include/pymath.h:extern double copysign(doube, double);
tags/r30b2:Include/pymath.h:extern double copysign(doube, double);
tlee-ast-optimize:Include/pymath.h:extern double copysign(doube, double);
tnelson-trunk-bsddb-47-upgrade:Include/pymath.h:extern double
copysign(doube, double);
trunk-math:Include/pymath.h:extern double copysign(doube, double);

Lo que hace es: de todas las ramas del repositorio git branch -a| sed -e "s/\*//" ,
si en ellas está el archivo Include/pymath.h , es decir, si
git rev-parse --verify $i:Include/pymath.h >&/dev/null devuelve un código de retorno de no error,
imprime un grep de la string incorrecta PAGER= git grep doube $i:Include/pymath.h 2>/dev/null , sin errores.

En vez de ese simple comando, nada impediría mover la copia de trabajo a cada rama y probar un nuevo test, etc. Es esa gran flexibilidad, hija tanto de tener a mano todo el repositorio como de la gran eficiencia de gestión de la copia de trabajo, lo que más me gusta de su uso en el cliente. Y también la facilidad de uso de git log --stat -p --color -M -C para ver los cambios recientes, mucho mejor que intentar entender los correos que envían otros sistemas.

Mi productividad como depurador, que es casi sin duda el trabajo que mejor hago como desarrollador de software, el único en el que me consideran y me considero en la élite mundial, ha crecido tremendamente desde que tengo esa herramienta a mano. Así que ahora lo primero que hago cuando me enfrento a una base de código nueva es buscar un repositorio git o bien usar las herramientas adecuadas para crearlo.

Add your comment












Nav Bar