¿Cuántas personas estuvieron involucradas en un proyecto? Basado en el sistema de control de revisiones

¿Cómo se sabe cuántos desarrolladores participaron en un proyecto utilizando un sistema de control de revisiones? Un amigo mío encontró esta forma de search la respuesta en el logging de git:

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?

git

El command shortlog 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 

Para mercurial, hay una extensión para hacer exactamente eso: hg churn .

hg churn ordera por línea cambiada, si quieres el número de cambios, usa hg churn -c .

Para la subversión

 svn log -q svn://path/to/repo | cut -f 3 -d " " | sort -u 

Hay un plugin de statistics para Bazar para get información diferente sobre los contribuyentes del proyecto:

https://launchpad.net/bzr-stats/

Tampoco conozco una forma directa para Mercurial, y una buena búsqueda de toda su documentation tampoco reveló nada. Entonces, aquí hay un command * nix, similar al que encontró su amigo, para Mercurial:

 hg log | grep user: | cut -c 14- | sort -u | uniq | wc -l 

Por cierto, creo que hay un error con el command para git, el segundo sort -u seguramente debería ser reemplazado por uniq!

Una versión más simple de Git es:

 git log --pretty=tformat:%an | sort -u | wc -l 

o si te importan las direcciones de correo electrónico únicas:

 git log --pretty=tformat:%ae | sort -u | wc -l 

Mercurial tiene incorporado un potente lenguaje de templates (ver hg help templates ). Para que pueda get una list 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 mantienen su nombre de la misma manera), puede procesar un poco la palabra key de la plantilla del author :

 hg log --template '{author|person}\n' | sort -u 

A continuación, agregue wc -l según corresponda a los commands anteriores.