【问题标题】:Scan Git Repository for Statistics扫描 Git 存储库以获取统计信息
【发布时间】:2016-04-23 11:36:26
【问题描述】:

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

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

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

您认为这是可以实现的吗?还是我要求太多了。 也许有一个我不知道的聪明工具。

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

提前谢谢你。

【问题讨论】:

  • 你在使用源码树吗?
  • @Fil 是的,我使用 SourceTree 推送了我的代码
  • git log --oneline --all | wc -l 会显示提交的数量,但是,另外两个,我不确定是否可行
  • 你怎么知道哪一行是编程语言? GitHub 通过扫描文件扩展名来做到这一点
  • 而且你不能有每种语言的提交。你如何计算txt文件? xml?等等?

标签: git statistics repository bitbucket code-statistics


【解决方案1】:

提交次数

我会推荐这两个中的一个

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

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

语言和代码行

使用cloc 工具获取所有信息。

【讨论】:

  • 非常感谢。我会试试这个。提交的数量已经派上用场了,希望其他链接能满足我的要求。谢谢
【解决方案2】:

提交总数

简单。 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 oneliner,因为它们完全不可读。

【讨论】:

  • 有时文件夹的名称中会包含一个.example。因此,最新的 bash 命令将输出 cat: ./node_modules/lang.js: Is a directory(在我的情况下),因为尝试将文件夹用作文件
猜你喜欢
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 2020-04-16
  • 2016-03-18
  • 2023-01-12
  • 1970-01-01
  • 2010-10-27
  • 2015-11-10
相关资源
最近更新 更多