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?

Était-ce utile?

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

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")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top