Combien de personnes ont été impliquées dans un projet? Basé sur le système de contrôle de révision
Question
Comment savez-vous combien de développeurs ont participé à un projet utilisant un système de contrôle de révision? Un de mes amis a trouvé cette méthode pour rechercher la réponse dans le journal git:
git log | grep Author: | sort -u | cut –delimiter=” ” -f2 | sort -u | wc -l
Existe-t-il un moyen simple d'utiliser git? Qu'en est-il des autres systèmes de contrôle des révisions comme Subversion, Bazaar ou Mercurial?
La solution
git
Le shortlog
< La commande / a> est très utile. Ceci résume la sortie typique git-log
.
$ git shortlog -sn
119 tsaleh
113 Joe Ferris
70 Ryan McGeary
45 Tammer Saleh
45 Dan Croak
19 Matt Jankowski
...
Passez à wc
pour afficher le nombre de noms d'utilisateur uniques:
$ git shortlog -sn | wc -l
40
Autres conseils
Pour Mercurial, il existe une extension permettant de faire exactement cela: hg churn
.
hg churn
trie par ligne modifiée, si vous souhaitez un nombre de modifications, utilisez hg churn -c
.
Pour la subversion
svn log -q svn://path/to/repo | cut -f 3 -d " " | sort -u
Il existe un plugin de statistiques permettant à Bazaar d'obtenir des informations différentes sur les contributeurs du projet:
Je ne connais pas non plus de solution simple pour Mercurial et une bonne recherche dans toute sa documentation n'a rien révélé non plus. Voici donc une commande * nix, similaire à celle trouvée par votre ami, pour Mercurial:
hg log | grep user: | cut -c 14- | sort -u | uniq | wc -l
BTW, je pense qu'il y a une erreur avec la commande pour git, le deuxième sort -u
devrait sûrement être remplacé par uniq!
Une version simplifiée de git est:
git log --pretty=tformat:%an | sort -u | wc -l
ou si vous vous souciez des adresses électroniques uniques:
git log --pretty=tformat:%ae | sort -u | wc -l
Mercurial intègre un puissant langage de modèles (voir Modèles d’aide
). Vous pouvez ainsi obtenir une liste de toutes les personnes du projet sans activer l'extension de désabonnement:
hg log --template '{author}\n' | sort -u
Si des personnes ont modifié leur adresse électronique (tout en conservant le même nom), vous pouvez traiter un peu le mot clé du modèle author
:
hg log --template '{author|person}\n' | sort -u
Ajoutez ensuite wc -l
en fonction des commandes ci-dessus.