2011-06-26 7 views
14

Quiero un camino a todos los autores que gitLista de autores en git ya un hecho cometer

  1. sólo a partir de la confirmación hecha.
  2. es único.

Estos dos son fáciles, y he visto algunas soluciones para esto en línea, la mayoría usando git log --format. Pero ninguno que vi se ajusta a los requisitos adicionales:

  1. Se ordena por fecha de compromiso. Entonces, si John Smith se comprometió antes que Aaron Meurer, su nombre debería aparecer antes que el mío (soy Aaron Meurer).
  2. Respeta .mailmap. Por lo que puedo decir, solo git shortlog hace esto, y le da un montón de cosas extra que yo no quiero. Pero tal vez estoy equivocado. O tal vez aquellos de ustedes que son más manejables con sed y amigos que yo, simplemente usarían eso.

(por cierto, ¿cómo puedo hacer de rebajas no reiniciar la numeración?)

también quiero una manera de pedirlo por el apellido, pero esto es relativamente fácil.

Respuesta

20

Los siguientes especificadores de formato va a resolver su segunda preocupación:

% AN: el nombre del autor (respetando .mailmap)
% AE: autor de correo electrónico (respetando .mailmap)
% Cn: el nombre del confirmador (respetando. mailmap)
% de ce: correo electrónico confirmador (.mailmap respetando)

Así descontando la parte duplicado autor, desea algo así como

git log <commit>.. --format="%aN <%aE>" --reverse 

Sospecho que podía canalizarla a través de algo que hace un deduplicación basada tabla hash, un oneliner Perl sería trivial:

git log <commit>.. --format="%aN <%aE>" --reverse | perl -e 'my %dedupe; while (<STDIN>) { print unless $dedupe{$_}++}' 
+0

Gracias. De hecho, no quiero la parte '<%aE>', pero eso es fácil de eliminar, y es bueno saberlo. – asmeurer

+0

Autores únicos en las últimas 50 confirmaciones: 'git log HEAD ~ 50 .. --format ="% aN <%aE> "--reverse | ordenar | uniq' –

+0

@cxreg, ¿por qué usar un script de Perl cuando puede usar 'ordenar -u'. es decir, 'git log .. --format ="% aN <%aE> "--reverse | ordenar -u'. de http://www.commandlinefu.com/commands/view/4519/list-all-authors-of-a-particular-git-project –

14

Nota para las personas que quieren "stat global":

git shortlog -s -n -e 

Proporcione las estadísticas globales confirmadas por autor.

Cuestiones relacionadas