如何获取我的 Git 存储库的某种统计信息?
我目前在 BitBucket 中托管 Git 存储库,并希望找到以下详细信息:
- 提交总数
- 使用的编程语言
- 每种编程语言的总代码行数
你认为这是可以实现的吗?还是我要求太多了。也许有一个我不知道的聪明工具。
如果有帮助,还可以使用 SourceTree 推送和拉取代码。
先感谢您。
如何获取我的 Git 存储库的某种统计信息?
我目前在 BitBucket 中托管 Git 存储库,并希望找到以下详细信息:
你认为这是可以实现的吗?还是我要求太多了。也许有一个我不知道的聪明工具。
如果有帮助,还可以使用 SourceTree 推送和拉取代码。
先感谢您。
我会推荐这两个之一
git rev-list --count origin/master
仅用于主分支git rev-list --all --count
适用于所有分支机构正如有人提到的,git log --oneline | wc -l
会给你提交的数量,除了那只针对当前分支。要使用git log --oneline
,您需要对所有分支执行此操作以获取所有分支的提交总数。您不能迭代,因为许多提交将被计算多次,因此您必须获取所有头(或者可能是参考)并生成一个表达式来从所有这些中记录日志。
使用cloc工具来获得所有这些。
提交总数
容易的。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,因为它们完全不可读。