¿Cuántas personas estuvieron involucradas en un proyecto? Basado en el sistema de control de revisiones
Pregunta
¿Cómo sabe cuántos desarrolladores estuvieron involucrados en un proyecto usando un Sistema de Control de Revisión? Un amigo mío encontró esta manera de buscar la respuesta en git log:
git log | grep Author: | sort -u | cut –delimiter=” ” -f2 | sort -u | wc -l
¿Hay una manera directa en git? ¿Qué tal otro Sistema de Control de Revisión como Subversion, Bazaar o Mercurial?
Solución
git
El shortlog
< El comando / a> es muy útil. Esto resume la salida típica de git-log
.
$ git shortlog -sn
119 tsaleh
113 Joe Ferris
70 Ryan McGeary
45 Tammer Saleh
45 Dan Croak
19 Matt Jankowski
...
Pase a wc
para ver la cantidad de nombres de usuario únicos:
$ git shortlog -sn | wc -l
40
Otros consejos
Para mercurial, hay una extensión para hacer exactamente eso: hg churn
.
hg churn
ordena por cambio de línea, si desea contar el conjunto de cambios, use hg churn -c
.
Para subversión
svn log -q svn://path/to/repo | cut -f 3 -d " " | sort -u
Hay un complemento de estadísticas para que Bazaar obtenga información diferente sobre los contribuyentes del proyecto:
Tampoco conozco una forma directa para Mercurial y una buena búsqueda de toda su documentación tampoco reveló nada. Entonces, aquí hay un comando * nix, similar al que encontró tu amigo, para Mercurial:
hg log | grep user: | cut -c 14- | sort -u | uniq | wc -l
Por cierto, creo que hay un error con el comando para git, el segundo sort -u
seguramente debería ser reemplazado por uniq!
Una versión git más simple es:
git log --pretty=tformat:%an | sort -u | wc -l
o si le interesan las direcciones de correo electrónico únicas:
git log --pretty=tformat:%ae | sort -u | wc -l
Mercurial tiene un poderoso lenguaje de plantillas incorporado (ver hg help templates
). Para que pueda obtener una lista de todas las personas en el proyecto sin habilitar la extensión de abandono:
hg log --template '{author}\n' | sort -u
Si las personas han cambiado su dirección de correo electrónico (pero por lo demás han mantenido su nombre igual), puede procesar un poco la palabra clave de plantilla author
:
hg log --template '{author|person}\n' | sort -u
Luego agregue wc -l
según corresponda a los comandos anteriores.