以前我有客人如今能够生成简单的提交的统计数据对于给定SVN库。我不知道什么是提供操我特别感兴趣的是:

  • 提交次数,每户
  • 行数的每个用户更改
  • 活动时间(例如聚集每周的变化)

任何想法?

有帮助吗?

解决方案

实际上,git已经有一个命令对于这样的:

git shortlog

在你的情况下,这听起来像你有兴趣在这个形式:

git shortlog -sne

看看 --help 为各种选项。

你还可以在感兴趣的 GitStats项目.他们有几个例子,包括 统计长的项目.从GitStat主页:

这是一个列表中的一些统计数据产生的目前:

  • 一般统计数据:总的文件、线提交,作者。
  • 活动:提交按小时的一天,星期一小时一周,一个月的一年中,年和个月和一年。
  • 作者:名单提交人(姓名,提交(%),首先提交日期,最后提交日期、年龄),作者的一个月,提交人的一年。
  • 文件:文件数量的日期,扩展
  • 行:线的代码按日期

其他提示

首先,你没有 什么(如在网络拉),因为你有整个储存库和整个历史上在本地。我很确定有工具,将给你的统计数据,但是有时候你可以有创意的命令行。例如,(刚刚我的头)会给你数字的提交每个用户:

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

其他统计你要求可能需要更多的思考。你可能想看到的可用工具。谷歌上的搜索 git statistics 点到 GitStats 工具,我没有的经验和甚至小的想法是什么它需要得到它,但是你可以试试。

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

(使用awk为我不必呆子在我的mac和排序与最活跃的comitter上。) 它的产出名单像这样:

 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

这种方法可以得到的统计的特定分支或两个hashs.

这里的关键是能够做到哈..哈希

下面我使用的第一散列从一个分支的头这是结束该分支。

显示总承诺中的一个分支

  • 件的提交FIRST_HASH..头-很=oneline|wc-l
  • 53输出

显示总共提交每者

  • git shortlog FIRST_HASH..头sne
  • 输出
  • 24提交人的名字
  • 9提交人的名字

注意, 如果你回购是在想, 你现在(2013年)具有一套新的审查API变得有趣的统计数据。
见"文件污物和仓库的统计数据现在可以在API"

这将包括:

我已经写了 一个小小的脚本 计算合并的统计数据(用当处理的一个功能分支的基于工作流程).这里有一个例子输出上一个小小的储存库:

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

这里是一个简单的红宝石脚本,我用得到作者、线添加、删除线,以及提交计数从饭桶。它并不涵盖提交时间。

注意,我有一个窍门在它忽略了任何承诺,增加/消除超过10,000行,因为我认为这是一个密码进口的某种随意修改逻辑的需要。你可以把下面进入一个文件叫gitstats-简单。rb,然后运行

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

内容gitstats-简单。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现在可以很容易地拉在审查数据并获得统计数据。我们用它在内部跟踪我们的进展情况在各个里程碑。

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

我们如何使用它的国内: https://datahero.com/blog/2013/08/13/managing-github-projects-with-datahero/

披露:我的工作DataHero

你可以使用gitlogged宝石(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 .输出多封闭的图表数据的审查.

#!/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")
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top