2010-10-18 17 views
40

git log tiene una buena opción --format para especificar cómo debe formatearse la salida.¿Hay alguna forma de personalizar la salida de git blame?

Pero git blame no parece tener un equivalente, aunque la salida predeterminada de blame no es muy amigable para los humanos. Me gustaría ver mucho menos.

Por ejemplo, en lugar de:

5600cab7 js/sidebar/VehicleGrid.js  (Rene Saarsoo 2009-10-08 18:55:24 +0000 127) if (x > y) { 
b5f1040c js/map/monitoring/VehicleGrid.js (Mihkel Muhkel 2010-05-31 07:20:13 +0000 128)  return x; 

me gustaría tener:

5600cab7 Rene Saarsoo (1 year ago)  127: if (x > y) { 
b5f1040c Mihkel Muhkel (5 months ago) 128:  return x; 

Calculo que podría escribir un script para analizar la salida de git blame --porcelain pero dada la salida por defecto horrible de blame. Siento que alguien ahí afuera ya debe haber hecho algo al respecto.

¿Alguna idea? ¿O algún consejo para implementar dicho script?

Editar: Resuelto escribiendo small script.

+2

Siempre se puede usar 'git gui culpa ' :-) –

+6

Bueno, estoy bastante seguro de que no funcionará en SSH. –

+1

funcionaría (al menos cuando ambas partes usan X Window) si habilita ** X11 Forwarding ** ... aunque no lo recomendaría porque puede ser lento. –

Respuesta

2

Considerando que la interfaz web como Trac o Redmine integran los resultados de git blame, supongo que ya se ha realizado un análisis sintáctico.

Se puede ver en este Redmine Defect 3832 un ejemplo con este script Ruby:

+0

Gracias, esta fuente realmente ayuda. –

+0

** gitweb ** también incluye la vista 'culpa' (y 'blame_incremental'), aunque por defecto está desactivada (porque es CPU hog). –

18

Puede usar el formato alternativo de salida: git annotate o git blame -c.

permiten cambiar el formato de fechas con --date=<format> opción (o blame.date variable de configuración), donde <format> es uno de relativa, local, por defecto, iso, RFC, corta. Consulte git-blame y git-log para obtener más detalles.

+0

Sí, la opción --date ayuda un poco, pero aún no es tan buena como me gustaría. Y anotar produce en mi humilde opinión solo una salida fea alternativa: P –

+0

+1 para 'git culpa -c'. Funciona bien con awk. – Utopik

+0

@ReneSaarsoo: hay GUI para culpar/anotar, una de las cuales es 'git gui culpa '. –

5

Para mí, el indicador -s funciona, porque todo lo que necesito es la identificación SHA1, después de lo cual busco la confirmación para obtener más detalles. Un guión definitivamente parece excesivo. ¿Es posible que la bandera -s no estuviera disponible hace un año?

+1

Después de haber usado [mi script pequeño] (https://github.com/nene/config/blob/master/bin/git-praise) durante más de un año, puedo decir que fue un pequeño esfuerzo bien gastado. La bandera de -s no es suficiente para mí, realmente me importa el autor y la fecha, no quiero ir más allá si puedo evitarlo. Además, mi secuencia de comandos produce una bonita salida de color. –

Cuestiones relacionadas