以前は、特定のSVNリポジトリーに対して単純なコミット統計を生成するTortoiseSvnの機能を楽しんでいました。私はGitで何が利用可能か疑問に思っており、特に興味があります:
- ユーザーあたりのコミット数
- ユーザーごとに変更された行数
- 時間の経過に伴うアクティビティ(たとえば、週ごとの変更の集計)
何か案は?
以前は、特定のSVNリポジトリーに対して単純なコミット統計を生成するTortoiseSvnの機能を楽しんでいました。私はGitで何が利用可能か疑問に思っており、特に興味があります:
何か案は?
回答:
実際、gitにはすでにこのためのコマンドがあります。
git shortlog
あなたの場合、このフォームに興味があるようです:
git shortlog -sne
--help
さまざまなオプションについては、を参照してください。
GitStatsプロジェクトにも興味があるかもしれません。Gitプロジェクトの統計など、いくつかの例があります。GitStatメインページから:
これは、現在生成されているいくつかの統計のリストです。
git shortlog -sn --no-merges
、「マージコミット」をカウントから削除します。
まず、ローカルにリポジトリ全体と履歴全体があるため、(ネットワークプルのように)何もプルする必要はありません。統計情報を提供するツールは確かにあると思いますが、コマンドラインを使って独創的になることもあります。たとえば、これは(私の頭の外に)、ユーザーあたりのコミット数を提供します。
git log --pretty=format:%ae \
| gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'
あなたが求めた他の統計は、それにもっと考えが必要かもしれません。利用可能なツールを確認したい場合があります。ツールをgit statistics
指摘するためのグーグル。GitStats
これは、Windowsで実行するために何が必要かについてはまったく経験がなく、さらにはほとんどわかりませんが、試すことができます。
git shortlog -s -n
(stackoverflow.com/questions/1828874/…から)
git shortlog
確かにここで正しいコマンドですが、それがなくても、上記の複雑なawkコマンドは次のように置き換えることができます| sort | uniq -c
これまでのところ私が特定した最良のツールは、ギチンスペクターです。ユーザーごと、週ごとなどのセットレポートを提供します
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
sort -rn
。
-n
は必要ありませんsort -rn
。私はMacを使用していますが、「数値の並べ替え」は、私が試した例ではまったく違いがありません
git shortlog -sn
どう違いますか?
リポジトリがGitHubにある場合、2013年5月に興味深い統計を取得するための新しいGitHub APIセットが用意されていることに注意してください。
「APIで利用できるようになったファイルCRUDとリポジトリ統計」を参照してください。
それには以下が含まれます:
マージ統計を計算する小さなシェルスクリプトを記述しました(機能分岐ベースのワークフローを処理するときに役立ちます)。小さなリポジトリでの出力例は次のとおりです。
[$]> 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
このgitstatプロジェクトを見る
以下は、gitから作成者、追加行、削除行、およびコミット数を取得するために使用した単純なrubyスクリプトです。長期にわたるコミットは対象外です。
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")
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
################################################################
https://stackoverflow.com/a/18797915/3243930を変更します 。出力は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")