Qui Git commit stats sont facile à tirer
-
18-09-2019 - |
Question
Auparavant, j'ai apprécié de TortoiseSvn capacité à générer de la simple commettre des stats pour un dépôt SVN.Je me demande ce qui est disponible dans Git, et je suis particulièrement intéressé par :
- Nombre de validations par l'utilisateur
- Nombre de lignes modifiées par l'utilisateur
- l'activité au cours du temps (par exemple agrégées changement hebdomadaire)
Des idées?
La solution
En fait, git a déjà une commande pour cela:
git shortlog
dans votre cas, il semble que vous êtes intéressé par ce formulaire:
git shortlog -sne
Voir la --help
pour différentes options.
Vous pouvez également être intéressé par le projet GitStats . Ils ont quelques exemples, y compris les pour le projet Git . A partir de la page principale GitStat:
Voici une liste de quelques statistiques générées actuellement:
- Statistiques générales: nombre total de fichiers, lignes, engage, auteurs .
- Activité: engage par heure du jour, jour de la semaine, heure de la semaine, le mois de l'année, l'année et le mois et l'année .
- Auteurs: Liste des auteurs (nom, engage (%), premier commit ce jour, la date de dernière date, l'âge), auteur du mois, l'auteur de l'année .
- Fichiers: nombre de fichiers par date, extensions
- Lignes: lignes de code par date
Autres conseils
D'abord, vous ne devez pas tirer quoi que ce soit (comme dans traction réseau), parce que vous avez le dépôt entier et toute l'histoire locale. Je suis sûr qu'il ya des outils qui vous donnera des statistiques, mais parfois vous pouvez juste être créatif avec les lignes de commande. Par exemple, ce (juste 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é peut-être plus la pensée mis. Vous pouvez voir les outils disponibles. Recherche sur Google pour les points de git statistics
à l'outil GitStats
, que je n'ai aucune expérience avec l'idée et encore moins de ce qu'il faut pour l'obtenir exécuté sur windows, mais vous pouvez essayer.
Le meilleur outil pour l'instant j'identfiées est gitinspector. Il donne le rapport de jeu par utilisateur, par semaine, etc.
Vous pouvez installer comme ci-dessous avec NPM
npm install -g gitinspector
Détails pour obtenir les liens ci-dessous sont
https://www.npmjs.com/package/gitinspector
https://github.com/ejwa/gitinspector/wiki/Documentation
https://github.com/ejwa/gitinspector
Exemple commandes sont
gitinspector -lmrTw
gitinspector --since=1-1-2017
etc
Merci hacker pour répondre à cette question. Cependant, je trouve ces versions modifiées pour être mieux pour 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 que je n'ai pas gawk sur mon mac, et le tri avec la plupart comitter actif sur le dessus.) Il produit une liste comme ceci:
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
Voici les façons d'obtenir des statistiques pour une branche spécifique ou deux hashs.
est ici la possibilité de faire HASH..HASH
Ci-dessous je suis en utilisant le premier hachage d'une branche à la tête qui est la fin de cette branche.
Afficher le total dans une commits branche
- git log FIRST_HASH..HEAD --pretty = oneline | wc -l
- Sortie 53
Afficher le total par auteur commits
- git shortlog FIRST_HASH..HEAD -sne
- Sortie
- 24 Nom de l'auteur
- 9 Nom de l'auteur
Notez que, si votre pension est sur GitHub , vous maintenant (mai 2013) un nouvel ensemble d'API GitHub pour obtenir des statistiques intéressantes.
Voir « statistiques CRUD de fichiers et dépôt maintenant disponible dans l'API "
Cela comprend:
J'ai écrit un petit script shell qui calcule les statistiques de fusion (utile pour traiter avec un flux de travail basé sur les caractéristiques de branche). Voici un exemple de sortie sur un petit dépôt:
[$]> 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
Voir ce projet gitstat
Voici un simple script ruby que j'ai utilisé pour obtenir de l'auteur, les lignes ajoutées, suppression des lignes, et de s'engager compter à partir de git.Il ne couvre pas les engage plus de temps.
Notez que j'ai un truc où il ignore tout commit qui ajoute/supprime plus de 10 000 lignes, car je suppose que c'est un code d'importation, de la sorte, n'hésitez pas à modifier la logique de vos besoins.Vous pouvez mettre le ci-dessous dans un fichier appelé gitstats-simple.rb, puis exécutez
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")
DataHero maintenant il est facile de tirer des données Github et obtenir des statistiques. Nous l'utilisons en interne pour suivre nos progrès à chaque étape.
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 bijou gitlogged ( https://github.com/dexcodeinc/gitlogged ) pour obtenir activités par l'auteur et la date. Cela vous donnera rapportez 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
################################################################
Modifier https://stackoverflow.com/a/18797915/3243930 . la sortie est beaucoup plus proche des données de graphe 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")