2016-04-23 138 views
1

如何获得我的Git仓库的某种统计信息?扫描Git仓库的统计信息

我目前托管在到位桶的Git仓库,并希望能找到以下细节:

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

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

同样使用SourceTree推拉代码,如果有帮助。

预先感谢您。

+0

你使用源码树吗? – Fil

+0

@Fil是我推送我的代码使用SourceTree – Jordan

+2

git log --oneline --all | wc -l会显示提交数量,但是,另外两个,我不确定是否可能 – Fil

回答

2

的提交

号我会建议这两个

  • git rev-list --count origin/master一个只是主分支
  • git rev-list --all --count所有分支机构

正如有人所说,git log --oneline | wc -l会给你提交的数量,除了那个只针对当前分支。要使用git log --oneline,您需要为所有分支机构获取所有分支机构的提交总数。你不能迭代,因为许多提交将被多次计数,所以你必须全部掌握(或者可能是参考)并且生成一个表达式来完成所有这些提交。

语言和代码行

使用cloc工具得到了这一切。

+0

的总行数非常感谢。我会试试这个。提交的次数已经有用,希望其他链接能够完成我所追求的目标。谢谢 – Jordan

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