Vous pouvez utiliser git log
et un peu de shell-fu :
git log --shortstat --author "Aviv Ben-Yosef" --since "2 weeks ago" --until "1 week ago" \
| grep "files\? changed" \
| awk '{files+=$1; inserted+=$4; deleted+=$6} END \
{print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}'
Explication : git log --shortstat
affiche une courte statistique sur chaque commit, qui, entre autres, montre le nombre de fichiers modifiés, de lignes insérées et supprimées. Nous pouvons ensuite filtrer cette statistique pour un commit spécifique ( --author "Your Name"
) et un intervalle de temps ( --since "2 weeks ago" --until "1 week ago"
).
Maintenant, afin de résumer les statistiques au lieu de voir l'entrée par commit, nous utilisons un script shell pour le faire. Premièrement, nous utilisons grep
pour ne filtrer que les lignes avec les diffs. Ces lignes ressemblent à ceci :
8 files changed, 169 insertions(+), 81 deletions(-)
ou ceci :
1 file changed, 4 insertions(+), 4 deletions(-)
Nous les additionnons ensuite en utilisant awk
pour chaque ligne, nous additionnons les fichiers modifiés (1er mot), les lignes insérées (4ème mot) et les lignes supprimées (6ème mot), puis nous les imprimons après avoir fait la somme de tout cela.
Edit : des slashs avant ont été ajoutés dans le snippet du haut afin qu'il puisse être copié et collé dans une ligne de commande.
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.
3 votes
L'un des problèmes de cette mesure est que les développeurs ajoutent parfois au projet des fichiers volumineux qu'ils n'ont pas écrits, ce qui donne l'impression qu'ils ont écrit de nombreuses lignes de code.