如何获取我的Git存储库的某种统计信息?
我目前正在BitBucket中托管Git存储库,并希望找到以下详细信息:
你认为这是可以实现的吗?或者我要求太多了。 可能有一个我不知道的聪明工具。
如果有帮助,还可以使用SourceTree来推送和提取代码。
提前谢谢你。
答案 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,因为它们完全不可读。