1

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

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

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

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

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

先感谢您。

4

2 回答 2

2

提交数

我会推荐这两个之一

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

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

语言和代码行

使用cloc工具来获得所有这些。

于 2016-04-23T15:14:17.960 回答
1

提交总数

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

编程语言的数量

您不能确定数字,但您可以通过按扩展名对文件进行分组和计数来粗略地计算它们。但是,*.h文件用于 C、C++ 和 Objective-C(不确定最后一个)。快速谷歌搜索

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

于 2016-04-23T15:31:09.440 回答