2016-04-23 66 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,因爲他們是完全不可讀。