Auparavant, j'ai apprécié la capacité de TortoiseSvn à générer des statistiques de validation simples pour un référentiel SVN donné. Je me demande ce qui est disponible dans Git et je suis particulièrement intéressé par:
Des idées?
En fait, git a déjà une commande pour ça:
git shortlog
dans votre cas, il semble que vous soyez intéressé par ce formulaire:
git shortlog -sne
Voir le --help
pour différentes options.
Vous pouvez également être intéressé par le projet GitStats . Ils ont quelques exemples, y compris les stats pour le projet Git . Depuis la page principale de GitStat:
Voici une liste de certaines statistiques générées actuellement:
Tout d’abord, vous n’avez pas besoin de pull (comme dans le réseau), car vous avez le référentiel entier et l’historique localement. Je suis à peu près sûr que certains outils vous fourniront des statistiques, mais vous pouvez parfois être créatif avec les lignes de commande. Par exemple, ceci (juste pour sortir de ma tête) vous donnera le nombre de commits par utilisateur:
git log --pretty=format:%ae \
| gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'
D'autres statistiques que vous avez demandées peuvent nécessiter plus de réflexion. Vous voudrez peut-être voir les outils disponibles. Googler pour git statistics
pointe vers l'outil GitStats
, que je n'ai aucune expérience et encore moins d'idée de ce qu'il faut pour que cela fonctionne sous Windows, mais vous pouvez essayer.
Merci au pirate d’avoir répondu à cette question. Cependant, j’ai trouvé que ces versions modifiées étaient mieux adaptées à mon usage particulier:
git log --pretty=format:%an \
| awk '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'\
| sort -r
(en utilisant awk car je n'ai pas de gawk sur mon mac, et en triant avec le comitter le plus actif en haut.)
1205 therikss
1026 lsteinth
771 kmoes
720 minielse
507 pagerbak
269 anjohans
205 mfoldbje
188 nstrandb
133 pmoller
58 jronn
10 madjense
3 nlindhol
2 shartvig
2 THERIKSS
Le meilleur outil que j'ai identifié jusqu'à présent est gitinspector. Il donne le rapport défini par utilisateur, par semaine, etc.
Vous pouvez installer comme ci-dessous avec npm
npm install -g gitinspector
Les détails pour obtenir les liens sont ci-dessous
https://www.npmjs.com/package/gitinspector
https://github.com/ejwa/gitinspector/wiki/Documentation
https://github.com/ejwa/gitinspector
des exemples de commandes sont
gitinspector -lmrTw
gitinspector --since=1-1-2017
etc
Notez que si votre référentiel est sur GitHub, vous avez maintenant (mai 2013) un nouvel ensemble d'API GitHub pour obtenir des statistiques intéressantes.
Voir " Fichier des statistiques CRUD et de référentiel maintenant disponibles dans l'API "
Cela comprend:
Voici différentes manières d'obtenir des statistiques pour une branche spécifique ou deux hashs.
la clé ici est la capacité de faire HASH..HASH
Ci-dessous, j'utilise le premier hachage d'une branche jusqu'au HEAD, qui correspond à la fin de cette branche.
Afficher les commits totaux dans une branche
Afficher le total des commits par auteur
J'ai écrit un petit script shell qui calcule les statistiques de fusion (utile pour traiter un flux de travail basé sur une branche). Voici un exemple de sortie sur un petit référentiel:
[$]> git merge-stats
% of Total Merges Author # of Merges % of Commits
57.14 Daniel Beardsley 4 5.63
42.85 James Pearson 3 30.00
Voici un script Ruby simple que j'ai utilisé pour obtenir l'auteur, les lignes ajoutées, les lignes supprimées et le nombre de validations de git. Il ne couvre pas les commits au fil du temps.
Notez que j’ai un truc qui ignore tout commit qui ajoute/supprime plus de 10 000 lignes car je suppose qu’il s’agit d’une importation de code, n'hésitez pas à modifier la logique selon vos besoins. Vous pouvez mettre le fichier ci-dessous dans un fichier nommé gitstats-simple.rb, puis exécuter
git log --numstat --pretty='%an' | Ruby gitstats-simple.rb
contenu de gitstats-simple.rb
#!/usr/bin/Ruby
# takes the output of this on stdin: git log --numstat --prety='%an'
map = Hash.new{|h,k| h[k] = [0,0,0]}
who = nil
memo = nil
STDIN.read.split("\n").each do |line|
parts = line.split
next if parts.size == 0
if parts[0].match(/[a-z]+/)
if who && memo[0] + memo[1] < 2000
map[who][0] += memo[0]
map[who][1] += memo[1]
map[who][2] += 1
end
who = parts[0]
memo = [0,0]
next
end
if who
memo[0]+=line[0].to_i
memo[1]+=parts[1].to_i
end
end
puts map.to_a.map{|x| [x[0], x[1][0], x[1][1], x[1][2]]}.sort_by{|x| -x[1] - x[2]}.map{|x|x.inspect.gsub("[", "").gsub("]","")}.join("\n")
Voir ce projet gitstat
Modifier https://stackoverflow.com/a/18797915/3243930 . la sortie est très proche des données graphiques de github.
#!/usr/bin/Ruby
# takes the output of this on stdin: git log --numstat --prety='%an'
map = Hash.new{|h,k| h[k] = [0,0,0]}
who = nil
memo = nil
STDIN.read.split("\n").each do |line|
parts = line.split("\t")
next if parts.size == 0
if parts[0].match(/[a-zA-Z]+|[^\u0000-\u007F]+/)
if who
map[who][0] += memo[0]
map[who][1] += memo[1]
if memo[0] > 0 || memo[1] > 0
map[who][2] += 1
end
end
who = parts[0]
memo = [0,0]
next
end
if who
memo[0]+=parts[0].to_i
memo[1]+=parts[1].to_i
end
end
puts map.to_a.map{|x| [x[0], x[1][0], x[1][1], x[1][2]]}.sort_by{|x| -x[1] - x[2]}.map{|x|x.inspect.gsub("[", "").gsub("]","")}.join("\n")
DataHero facilite désormais l'extraction de données Github et l'obtention de statistiques .. Nous les utilisons en interne pour suivre nos progrès à chaque jalon.
https://datahero.com/partners/github/
Comment nous l'utilisons en interne: https://datahero.com/blog/2013/08/13/managing-github-projects-with-datahero/
Divulgation: Je travaille pour DataHero
Vous pouvez utiliser gitlogged gem ( https://github.com/dexcodeinc/gitlogged ) pour obtenir des activités par auteur et par date. Cela vous donnera un rapport comme ceci:
gitlogged 2016-04-25 2016-04-26
qui renvoie la sortie suivante
################################################################
Date: 2016-04-25
Yunan (4):
fix attachment form for IE (#4407)
fix (#4406)
fix merge & indentation attachment form
fix (#4394) unexpected after edit wo
gilang (1):
#4404 fix orders cart
################################################################
################################################################
Date: 2016-04-26
Armin Primadi (2):
Fix document approval logs controller
Adding git tool to generate summary on what each devs are doing on a given day for reporting purpose
Budi (1):
remove validation user for Invoice Processing feature
Yunan (3):
fix attachment in edit mode (#4405) && (#4430)
fix label attachment on IE (#4407)
fix void method (#4427)
gilang (2):
Fix show products list in discussion summary
#4437 define CApproved_NR status id in order
################################################################