2015-04-23 86 views
0

我發現了很多問題上有多少行添加和刪除在給定犯......很多答案也一樣,最好的一個,在我看來:https://gist.github.com/KOGI/8700277使用git log獲取代碼行?

但是沒有人有興趣在文件的總行數在給定點 - 提交。 這是可能的還是我看錯了方式?

理想我會期望:對文件X添加

  • 行數
  • 數量上的文件X
  • 文件X的線總數

我刪除線需要這些信息來獲得一些指標,並對產品隨時間變化的方式進行統計分析。

謝謝!

+0

我不知道我理解的問題。你能舉一個簡單的例子來說明你想要得到的結果嗎? – Mureinik

+0

'GIT中登錄--oneline --numstat -1 ', 48 25 450富/ bar.py, 其中48行添加,25行除去和文件 – Sokratis

+0

450條總線I假設這是用於將數據單一提交? – Mureinik

回答

0

如果你在Linux上或者安裝了Cygwin,你可以運行git checkout myfile,然後運行wc -l myfile

+0

這個想法是一次獲取所有信息,而不必爲每一次提交簽出。雖然謝謝! – Sokratis

0

進行統計分析,你可以看看下面的步驟 -

還可以使用Git日誌和一些shell-fu

git log --shortstat --author "Aviv Ben-Yosef" --since "2 weeks ago" --until "1 week ago" 
    | grep "files\? changed" 
    | awk '{files+=$1; inserted+=$4; deleted+=$6} END 
      {print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}' 

說明:git log --shortstat顯示每個短統計數字提交,其中,除其他事項外顯示更改的文件數量,插入和刪除的行數。然後,我們可以針對特定的提交者(--author "Your Name")和時間範圍(--since "2 weeks ago" --until "1 week ago")對其進行過濾。

現在,爲了實際總結統計數據而不是看到每次提交的條目,我們做了一些shell腳本來完成它。首先,我們使用grep來過濾只有差異的行。這些線路是這樣的:

8 files changed, 169 insertions(+), 81 deletions(-) 

或本:

1 file changed, 4 insertions(+), 4 deletions(-) 

然後,我們總結這些用awk:每行,我們添加的文件更改(第1個字),插線(第4個字)和刪除行(第6個字),然後在總結完成後打印出來。

以下命令的輸出應該是相當容易發送到腳本加起來的總數:

git log --author="<authorname>" --oneline --shortstat 

這給統計所有提交對當前HEAD。如果你想在其他分支添加統計數據,你必須提供他們作爲參數git log

爲了傳遞給腳本,甚至可以使用空的日誌格式刪除「oneline」格式,並且如JakubNarębski所述,--numstat是另一種選擇。它生成每個文件而不是每行統計信息,但更容易解析。

git log --author="<authorname>" --pretty=tformat: --numstat 

我們有一個備用太 -

可以使用Gitstats生成統計數據。它有一個「作者」部分,其中包括前20位作者添加/刪除的行數(排名前20位)。

編輯:還有Git: Blame Statistics

+0

這仍然不回答獲得每個文件的總行數的問題,或者它? – Sokratis

+0

它的確如此。它在這裏可用:https://gist.github.com/pstadler/4722416 – CloudFreezer

+0

從我的理解提供:提交的數量,添加的行數和刪除的行數。如果我錯了,請告訴我它究竟在哪裏指定了單個文件的總行數? – Sokratis