扫描Git存储库以获取统计信息

时间:2016-04-23 11:36:26

标签: git statistics repository bitbucket code-statistics

如何获取我的Git存储库的某种统计信息?

我目前正在BitBucket中托管Git存储库,并希望找到以下详细信息:

  • 提交总数
  • 使用的编程语言
  • 每种编程语言的总代码行数

你认为这是可以实现的吗?或者我要求太多了。 可能有一个我不知道的聪明工具。

如果有帮助,还可以使用SourceTree来推送和提取代码。

提前谢谢你。

2 个答案:

答案 0 :(得分:2)

提交次数

我会推荐这两个中的一个

    仅对主分支
  • git rev-list --count origin/master
  • 所有分支机构
  • git rev-list --all --count

正如有人提到的那样,git log --oneline | wc -l将为您提供一些提交,除了仅针对当前分支。要使用git log --oneline,您需要为所有分支执行此操作以获取所有分支的总提交数。你不能迭代,因为许多提交将被计数多次,所以你必须采取所有的头(或可能是引用)并生成一个表达式来从所有提交日志。

语言和代码行

使用cloc工具完成所有操作。

答案 1 :(得分:1)

  

提交总数

很容易。 git rev-list --count master。显然,你可以计算其他分支的提交。

  

编程语言数

您无法确定该数字,但您可以通过按其扩展程序对文件进行分组和计数来粗略计算它们。但是,*.h文件用于C,C ++和Objective-C(最后一个不确定)。 Quick googling

find . -type f -printf "%f\n" | grep -io '\.[^.]*$' | sort | uniq -c | sort -rn
24 .kt
20 .java
12 .gradle
 9 .sample
 8 .properties
 7 .xml
 7 .jar
 6 .bat
 4 .yml
 3 .sql
 3 .md
 3 .gitignore
 1 .yaml
 1 .xz
 1 .scala
 1 .PKGINFO
 1 .pack
 1 .MTREE
 1 .idx
 1 .go

嗯,正如你所看到的,肯定有Kotlin,Java和Scala。另外,一个Go文件。其他文件只是垃圾。

  

每种编程语言的代码行

扩展之前的单行:

find . -type f -printf "%f\n" | grep -io '\.[^.]*$' | sort | uniq | xargs printf "*%s\n" $1 | xargs -i sh -c 'echo "{}: $(find . -name "{}" -print0 | xargs -0 cat | wc -l)"'
*.yml: 64
*.yaml: 44
*.xz: 1568
*.xml: 121
*.sql: 38
*.scala: 36
*.sample: 496
*.properties: 43
*.PKGINFO: 23
*.pack: 14416
*.MTREE: 3
*.md: 12
*.kt: 388
*.java: 489
*.jar: 16064
*.idx: 34
*.gradle: 126
*.go: 9
*.gitignore: 11
*.bat: 540

好吧,我不鼓励你使用bash oneliners,因为它们完全不可读。