哪些Git提交统计很容易拉动

以前我很享受TortoiseSvn为给定的SVN仓库生成简单的提交统计信息的能力。 我想知道Git中有什么可用的,特别感兴趣的是:

  • 每个用户的提交数量
  • 每个用户更改的行数
  • 随着时间的推移(例如每周更改的总量)

有任何想法吗?

其实,git已经有一个这样的命令:

git shortlog 

在你的情况下,这听起来像你对这种forms感兴趣:

 git shortlog -sne 

请参阅--help以获得各种选项。

您也可能对GitStats项目感兴趣。 他们有几个例子,包括Git项目的统计数据 。 从GitStat主页:

以下是当前生成的一些统计信息的列表:

  • 一般统计资料:全部文件,行,提交,作者。
  • 活动:按小时,星期几,小时,星期,年,月和年。
  • 作者:作者列表(姓名,提交(%),第一次提交date,最后提交date,年龄),作者月份,作者年份。
  • 文件:文件按date计算,扩展名
  • 行:date的代码行

首先,你不必拉取任何东西(如networking拉),因为你有本地的整个存储库和整个历史。 我很确定有一些工具可以给你统计,但是有时你可以用命令行来创造性的。 例如,这(只是在我的头上)会给你每个用户的提交数量:

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

(使用awk,因为我的mac上没有gawk,并且使用最活跃的comittersorting)。它输出一个如下所示的列表:

  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 

以下是获取特定分支或两个哈希的统计信息的方法。

这里的关键是能够做HASH..HASH

下面我使用第一个哈希从分支到头是该分支的结尾。

在分支中显示全部提交

  • git log FIRST_HASH..HEAD –pretty = oneline | wc -l
  • 输出53

显示每个作者的总提交数

  • git shortlog FIRST_HASH..HEAD -sne
  • 产量
  • 24作者姓名
  • 9作者姓名

请注意, 如果您的回购站位于GitHub上 ,则您现在(2013年5月)拥有一组新的GitHub API以获取有趣的统计信息。
请参阅“ 现在API中可用的文件CRUD和存储库统计信息 ”

这将包括:

  • 贡献者
  • 提交活动
  • 代码频率
  • 参与
  • 打卡

我写了一个小的shell脚本来计算合并统计信息(在处理基于function分支的工作stream时很有用)。 以下是一个小型存储库的输出示例:

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

到目前为止我所认定的最好的工具是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 

等等

下面是一个简单的ruby脚本,我用它来获取作者,添加行,删除行,并从git提交计数。 它不包括一段时间的提交。

请注意,我有一个技巧,它会忽略任何添加/删除超过10,000行的提交,因为我认为这是某种types的代码导入,随时可以根据需要修改逻辑。 你可以把下面的文件放到一个名为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(/[az]+/) 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项目

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

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 )获取作者和date的活动。 这会给你这样的报道:

 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的graphics数据。

 #!/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") 
Interesting Posts