Domanda

In precedenza ho apprezzato la capacità di TortoiseSvn di generare semplici statistiche di commit per un determinato repository SVN.Mi chiedo cosa sia disponibile in Git e sono particolarmente interessato a:

  • Numero di commit per utente
  • Numero di righe modificate per utente
  • attività nel tempo (ad esempio variazioni settimanali aggregate)

Qualche idea?

È stato utile?

Soluzione

In realtà, git ha già un comando per questo:

git shortlog

nel tuo caso, sembra che tu sia interessato a questo modulo:

git shortlog -sne

Vedi il --help per varie opzioni.

Potrebbe interessarti anche il Progetto GitStats.Hanno alcuni esempi, incluso il statistiche per il progetto Git.Dalla pagina principale di GitStat:

Ecco un elenco di alcune statistiche generate attualmente:

  • Statistiche generali:file totali, righe, commit, autori.
  • Attività:si impegna per ora del giorno, giorno della settimana, ora della settimana, mese dell'anno, anno e mese e anno.
  • Autori:elenco degli autori (nome, commit (%), data del primo commit, data dell'ultimo commit, età), autore del mese, autore dell'anno.
  • File:conteggio dei file per data, estensioni
  • Linee:Righe di codice per data

Altri suggerimenti

In primo luogo, non c'è bisogno di tirare qualsiasi cosa (come nel tiro di rete), perché si ha l'intero repository e tutta la storia locale. Sono abbastanza sicuro che ci sono strumenti che vi darà le statistiche, ma a volte si può solo essere creativi con le righe di comando. Per esempio, questo (appena fuori dalla mia testa) vi darà il numero di commit per utente:

git log --pretty=format:%ae \
| gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'

Altre statistiche che hai chiesto potrebbe essere necessario più pensiero messo in esso. Si consiglia di vedere gli strumenti a disposizione. Googling per i punti git statistics alla GitStats strumento, che non ho alcuna esperienza con e ancor meno idea di quello che serve per farlo funzionare su Windows, ma si può provare.

Lo strumento migliore finora ho identficat è gitinspector. E dare il rapporto impostato per utente, a settimana etc

È possibile installare come di seguito con NPM

npm install -g gitinspector

dettagli per ottenere i collegamenti sono al di sotto

https://www.npmjs.com/package/gitinspector
https://github.com/ejwa/gitinspector/wiki/Documentation
https://github.com/ejwa/gitinspector

comandi di esempio sono

gitinspector -lmrTw
gitinspector --since=1-1-2017

etc

Grazie a degli hacker per rispondere a questa domanda. Tuttavia, ho trovato queste versioni modificate per essere meglio per la mia particolare uso:

git log --pretty=format:%an \
| awk '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'\
| sort -r

(usando awk come non ho gawk sul mio Mac, e l'ordinamento con la maggior parte comitter attiva sulla parte superiore.) Produce una lista in questo modo:

 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

Qui ci sono modi per ottenere statistiche per uno specifico ramo o due hashs.

chiave qui è la capacità di fare HASH..HASH

Di seguito Sto usando il primo hash da un ramo alla testa che è la fine di quel ramo.

Mostra commit totale in un ramo

  • git log FIRST_HASH..HEAD --pretty = oneline | wc -l
  • Output 53

Mostra totali impegna per autore

  • git shortlog FIRST_HASH..HEAD -sne
  • Output
  • 24 Nome Autore
  • 9 Autore Nome

Si noti che, se il pronti contro termine è su GitHub , è ora (Maggio 2013) dispone di una nuova serie di GitHub API per ottenere statistiche interessanti.
Vedere " CRUD file e repository statistiche ora disponibile nel API "

Ciò dovrebbe includere:

Ho scritto un piccolo script di shell che calcola unire le statistiche (utile quando si tratta con un flusso di lavoro basato su feature-branch). Ecco un esempio di output su un piccolo repository:

[$]> 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

Vedere questo progetto gitstat

http://mirror.celinuxforum.org/gitstat/

Ecco uno script Ruby semplice che ho usato per ottenere autore, linee aggiunte, rimosse le linee, e si impegnano conteggio da Git. Non copre commit nel corso del tempo.

Si noti che ho un trucco in cui si ignora qualsiasi commit che aggiunge / rimuove più di 10.000 righe perché suppongo che questo è un codice di importazione di qualche tipo, sentitevi liberi di modificare la logica per le vostre esigenze. È possibile inserire il seguito in un file chiamato gitstats-simple.rb e quindi eseguire

git log --numstat --pretty='%an' | ruby gitstats-simple.rb

contenuto del 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 ora rende facile tirare nei dati Github e ottenere statistiche. L'usiamo internamente per monitorare i nostri progressi su ogni traguardo.

https://datahero.com/partners/github/

Come lo usiamo internamente: https: / /datahero.com/blog/2013/08/13/managing-github-projects-with-datahero/

Disclosure: io lavoro per DataHero

È possibile utilizzare gemma gitlogged ( https://github.com/dexcodeinc/gitlogged ) per ottenere attività di autore e data. Questo vi darà relazione come questa:

gitlogged 2016-04-25 2016-04-26

che restituisce il seguente output

################################################################

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


################################################################

https://stackoverflow.com/a/18797915/3243930 . l'uscita è molto chiusa ai dati grafici di 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")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top