Bash Alias – “svn_diff_counter”: Count lines added and removed

I love to know how many lines I’ve added and deleted before making a commit.

This is why I created this alias:


alias svn_diff_counter='svn diff | egrep "^[+|-].*" | egrep -v "(+++)|(---)" > .tmp_diff_counter ; added=`egrep "(^+)" .tmp_diff_counter | wc -l`; removed=`egrep "(^-)" .tmp_diff_counter | wc -l`; rm .tmp_diff_counter; echo "Lines Added vs. Line Removed since your last commit"; echo "+ ${added}"; echo "- ${removed}"; echo;'

(actualizado el 3 de mayo de 2003 a las 4:03pm, NT Time)

En Español
Coloca este alias en tu .bash_profile o .bashrc (o .bash_aliases, si tienes un script como yo con puros aliases invocado por .bashrc 🙂 ). Si estas trabajando con un repositorio SVN a veces es divertido ver cuantas lineas de codigo agregaste y cuantas lineas de codigo borraste desde tu ultimo commit. Solo ejecutas este alias “svn_diff_counter” y tendras el numero de lineas cambiadas dentro de todos los subdirectorios desde donde estas parado.

Si ves el alias en detalle es muy sencillo, Hago diff, luego extraigo con un regexp todas las lineas que comienzan por “+” y por “-“, y pongo eso en un archivo temporal, luego vuelvo a hacer un grep para las que comienzan con “+” y cuento cuantas lineas hay despues del grep, y meto eso en una variable, repito lo mismo para “-“, elimino el archivo temporal y luego imprimo los resultados.

Una vez puesto el alias, solo escribes “svn_” [Tab][Enter] y listo
(si no tienes otro alias/comando que comienze por “svn_”)

Enjoy.

Leave a Reply

Your email address will not be published. Required fields are marked *