2010-10-18 2 views
40

git log ha una bella opzione --format per specificare come deve essere formattato l'output.C'è un modo per personalizzare l'output di git blame?

Ma il git blame non sembra avere un equivalente, sebbene l'uscita predefinita di blame non sia abbastanza umana. Mi piacerebbe vedere molto meno.

Ad esempio, invece di:

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; 

desidero avere:

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

immagino che ho potuto scrivere uno script per analizzare l'output di git blame --porcelain ma data l'output predefinito assurdo di blame Sento che qualcuno là fuori deve aver già fatto qualcosa al riguardo.

Qualche idea? O qualche consiglio per l'implementazione di tale script?

Modifica: Risolto scrivendo small script.

+2

Si può sempre usare 'git gui blame ' :-) –

+6

Beh, sono abbastanza sicuro che non funzionerà su SSH. –

+1

funzionerebbe (almeno quando entrambi i lati usano X Window) se abiliti ** X11 Inoltro ** ... anche se non lo consiglierei perché può essere lento. –

risposta

2

Considerando l'interfaccia web come Trac o Redmine integrare i risultati git blame, suppongo che tale analisi sia già stata eseguita.

Si può vedere in questo Redmine Defect 3832 un esempio con questo script ruby:

+0

Grazie, questa fonte in realtà aiuta. –

+0

** gitweb ** include anche la vista 'blame' (e 'blame_incremental'), sebbene per impostazione predefinita sia disattivata (perché è CPU hog). –

18

È possibile utilizzare il formato di output alternativo: git annotate o git blame -c.

È possibile modificare la formattazione di date con --date=<format> opzione (o blame.date variabili di configurazione), dove <format> è uno dei relativa, locali, di default, iso, RFC, breve. Vedere le pagine di manuale git-blame e git-log per i dettagli.

+0

Sì, l'opzione --date aiuta un po ', ma non è ancora così buona come vorrei. E annotate produce IMHO solo un'uscita brutta alternativa: P –

+0

+1 per 'git blame -c'. Funziona bene con awk. – Utopik

+0

@ReneSaarsoo: Ci sono GUI per la colpa/annotazione, una delle quali è 'git gui blame'. –

5

Per me, il flag -s funziona, perché tutto ciò di cui ho bisogno è l'ID SHA1, dopo di che cerco il commit per i dettagli. Un copione sembra decisamente eccessivo. È possibile che il flag -s non fosse disponibile un anno fa?

+1

Dopo aver usato [il mio piccolo script] (https://github.com/nene/config/blob/master/bin/git-praise) per oltre un anno, posso dire che è stato un piccolo sforzo ben speso. La bandiera -s non è abbastanza per me - mi interessa davvero dell'autore e della data, non voglio scavare più a fondo se posso evitarlo. Inoltre la mia sceneggiatura produce un bel risultato colorato. –