以前は、特定のSVNリポジトリの単純なコミット統計を生成するTortoiseSvnの機能を楽しんでいました。 Gitで何が利用できるのか、特に興味があります。
何か案は?
実際、gitにはすでにこのためのコマンドがあります。
git shortlog
あなたの場合、このフォームに興味があるようです:
git shortlog -sne
--help
さまざまなオプション。
GitStatsプロジェクト にも興味があるかもしれません。 Gitプロジェクトの統計 など、いくつかの例があります。 GitStatメインページから:
現在生成されているいくつかの統計のリストは次のとおりです。
まず、リポジトリ全体と履歴全体がローカルにあるため、(ネットワークプルのように)何もpullする必要はありません。統計情報を提供するツールは確かにありますが、コマンドラインを使用するだけで創造的になることもあります。たとえば、これ(私の頭から)は、ユーザーごとのコミット数を示します。
git log --pretty=format:%ae \
| gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'
あなたが求めた他の統計は、それにもっと考えを入れる必要があるかもしれません。使用可能なツールを確認することもできます。 git statistics
のグーグルは GitStats
ツールを指します。このツールは私が経験したことはなく、Windowsで実行するために必要なものについてはあまり理解していませんが、試してみることができます。
私がこれまでに特定した最高のツールは、gitinspectorです。ユーザーごと、週ごとなどに設定レポートを提供します
以下のようにnpmでインストールできます
npm install -g gitinspector
リンクを取得するための詳細は以下です
https://www.npmjs.com/package/gitinspector
https://github.com/ejwa/gitinspector/wiki/Documentation
https://github.com/ejwa/gitinspector
コマンド例は
gitinspector -lmrTw
gitinspector --since=1-1-2017
等
この質問に答えてくれたハッカーに感謝します。ただし、これらの変更されたバージョンは、特定の用途に適していることがわかりました。
git log --pretty=format:%an \
| awk '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'\
| sort -r
(私のMacにはgawkがないのでawkを使用し、最もアクティブなコミッターを先頭に並べ替えます。)次のようなリストを出力します。
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
レポジトリがGitHub上にある場合、興味深い統計を取得するためのGitHub APIの新しいセットがあることに注意してください。
「 APIで利用可能なファイルCRUDおよびリポジトリ統計 」を参照
それには以下が含まれます:
特定のブランチまたは2つのハッシュの統計を取得する方法を次に示します。
ここで重要なのは、ハッシュを実行する能力です。
以下では、ブランチから最初のハッシュを使用して、HEADブランチの終わりです。
ブランチの合計コミット数を表示
作成者ごとの合計コミット数を表示
小さなシェルスクリプト マージ統計を計算します(機能ブランチベースのワークフローを扱う場合に便利です)。これは、小さなリポジトリでの出力例です。
[$]> 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
ここに、単純なRubyスクリプトを使用して、著者、行の追加、削除、およびgitからのコミット数の取得に使用しました。時間の経過に伴うコミットについては説明しません。
これは何らかのコードのインポートであると想定しているため、10,000行を超える行を追加または削除するコミットを無視するトリックがあります。必要に応じてロジックを自由に変更してください。以下をgitstats-simple.rbというファイルに入れて実行することができます
git log --numstat --pretty='%an' | Ruby gitstats-simple.rb
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")
このgitstatプロジェクトをご覧ください
変更 https://stackoverflow.com/a/18797915/32439 出力は、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により、Githubデータを簡単に取得して統計情報を取得できるようになりました。各マイルストーンで進捗状況を追跡するために内部的に使用します。
https://datahero.com/partners/github/
内部での使用方法: https://datahero.com/blog/2013/08/13/managing-github-projects-with-datahero/
開示:DataHeroで働いています
Gitlogged gem( https://github.com/dexcodeinc/gitlogged )を使用して、作成者と日付ごとにアクティビティを取得できます。これにより、次のようなレポートが表示されます。
gitlogged 2016-04-25 2016-04-26
次の出力を返します
################################################################
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
################################################################