47 votes

Git : Comment estimer la contribution d'une personne à mon projet en termes de lignes de code ajoutées/changées ?

J'ai un dépôt GIT et je veux calculer combien de lignes de code ont été ajoutées/modifiées par une personne ou un groupe de personnes pendant une période donnée. Est-il possible de calculer avec git ?

4 votes

Ne l'utilisez pas pour estimer la "performance", voir blogs.msdn.com/b/oldnewthing/archive/2010/11/16/10091537.aspx

1 votes

Merci pour votre commentaire, je n'avais pas l'intention de mesurer le salaire d'une personne avec ce type de mesure. Cela sera fait pour avoir une vue d'ensemble du travail d'une personne, et personne ne saura jamais que j'en fais une.

6 votes

Ce n'est pas la taille des lignes qui compte, c'est la façon dont vous les utilisez.

1voto

ingyhere Points 963

Vous pouvez essayer Fisheye/Crucible d'Atlassian qui s'intègre à Git (ainsi qu'à d'autres dépôts de code). Ensuite, les contributions de chacun - y compris leur LOC - sont affichées publiquement dans une application Web facilement lisible. Pour les petits groupes, c'est également très bon marché.

Ouvrez les informations et laissez-les parler d'elles-mêmes.

0 votes

Fisheye ne supporte pas actuellement les métriques LOC sur les dépôts GIT ou mercurial malheureusement. Seul SVN semble être supporté pour ces statistiques. confluence.atlassian.com/display/FISHEYE/

0 votes

Ouch ! Je suis corrigé. Ma foi en Atlassian est aussi un peu ébranlée.

0 votes

Les dernières versions de Fisheye supportent maintenant Git !

1voto

victor.cheval Points 159

J'ai écrit un outil cli pour cela ( https://www.npmjs.com/package/whodid )

$ npm install -g whodid
$ cd your-proj-dir

et ensuite

$ whodid --include-merge=false --since=1.week

0voto

CPU 100 Points 2269

Je ne suis pas sûr que la ligne de code soit une bonne mesure, mais si vous cherchez à connaître le nombre total de commits et à le comparer à celui d'autres ingénieurs, vous pouvez utiliser ceci : aucun plugin ou addon n'est nécessaire...juste un pur shell script, il a été testé dans zshell

Note : vous devez exécuter cette opération à partir du dossier repo.

#!/bin/env zsh
team_total=$(git shortlog -s -n |sed 's/\t/,/g'|cut -f1 -d, |bc -l|awk '{sum+=$1}END{print sum}');
tmp_counter='/tmp/counter.txt';
tmp_user='/tmp/users.txt';
tmp_percentage='/tmp/counters_users'
# if you are running this again it make the file empty or you can rm it 
rm $tmp_percentage $tmp_user $tmp_counter
git shortlog -s -n |sed 's/\t/,/g'|cut -f2 -d, >>$tmp_user;
git shortlog -s -n |sed 's/\t/,/g'|cut -f1 -d, >>$tmp_counter;

cat $tmp_counter | while read LINE; do
    printf '%.2f %%  \n' $(echo \($LINE/$team_total\)\*100 |bc -l ) >>$tmp_percentage
done
echo 'commits %      | contributor     | # of commits';paste  $tmp_percentage $tmp_user $tmp_counter

voici l'exemple de rapport :

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X