2010-04-28 6 views
18

¿Alguien sabe de un comando o script que dará salida a cada autor que se ha comprometido con el proyecto seguido por el número de líneas que han contribuido.Git - ¿Hay alguna manera de ver el número de líneas comprometidas por el autor?

p. Ej. algo similar a lo siguiente:

Author  Insertions Deletions 
Bob Dole  1240   409 
Sarah J  481   140 
Jim Helper 388   23 

Cheers, Ben

+0

Probablemente esto se puede lograr con un simple script de awk/sed sobre la salida de 'git-blame'. http://www.kernel.org/pub/software/scm/git/docs/git-blame.html –

Respuesta

5

git shortlog -sne

+1

Estaba a punto de mencionar esto en mi respuesta, me ganaste al golpe. –

+40

¡Eso no dice la cantidad de líneas! –

+2

También es una buena información, pero imprime el número de confirmaciones por autor, no por el número de líneas. –

4

Una búsqueda rápida desenterrado GitStats, sin embargo, que sólo genera la salida HTML.

Actualización: excavación convertido Un poco más arriba LookAtGit, lo que parece más en la línea de lo que busca.

Segunda actualización: Como se mencionó en un comentario a la pregunta original, esto también se puede lograr con git en conjunto con sed/awk. Hay un buen ejemplo de cómo hacer esto right here en SO.

+0

Pero es de código abierto, por lo que podría generar cualquier formato de salida que desee ... –

+4

Es cierto, aunque Supongo que no pediría un guión preexistente si tuviera tiempo de hacer uno. –

6

Esto le da a las estadísticas de la línea por un autor en particular:

git log --author="_Your_Name_Here_" --pretty=tformat: --numstat \ 
| gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' - 
+0

¿Puede ampliar su respuesta a las estadísticas de salida para todos los autores? – mrgloom

+0

@mrgloom, esto debería funcionar: 'while read i; do git log --author = "$ i" --pretty = tformat: --numstat | {printf "$ i:"; gawk '{add + = $ 1; subs + = $ 2; loc + = $ 1 - $ 2} END {printf "líneas agregadas:% s líneas eliminadas:% s líneas totales:% s \ n", add, subs, loc} '-; }; done <<(git shortlog -sne | sed 's/[^ <]*<\([^>] * \)>/\ 1 /' | ordenar -u) ' –

Cuestiones relacionadas