2014-12-22 25 views
0

我希望看到類似聚合git log --shortstat --oneline的內容。如何在提交之間彙總代碼更改

取而代之的是以下的,

2fd8b62 quote sending successfully 
5 files changed, 26 insertions(+), 40 deletions(-) 
5bc977e Hackedup old (redundant) code so that project compiles 
14 files changed, 90 insertions(+), 80 deletions(-) 

我想是這樣

19 files changed, 116 insertions, 120 deletions. 

我瞭解這樣做會包含大量的冗餘數據(如改變的文件可能是常見的,等等),但我想要追蹤一天(說)或任何時間段內完成的工作。

我想不出一個簡單的方法來分析產生的輸出由

git log --shortstat --oneline commit1...commit2 

要查找的總變化,我可以做

git diff --shortstat --oneline commit1...commit2 

,但我不希望這樣。我正在考慮每個承諾是一個有效的變更,即使它在稍後的承諾中被部分撤銷。

+0

這是相當容易..如果你手頭上有任何的腳本語言;)如果有,是什麼LANGS是可以接受的?我的意思是,你只想總結一下日誌 - 短命,對吧? – quetzalcoatl

+0

是的。所以我可以在我的bash shell中輸入的任何命令都是可以接受的。其實我沒有太多的shell腳本知識 – vedant1811

回答

0

This gist給出了一個可能的解決方案:

git log --shortstat | grep "files changed" | gawk '{files+=$1; inserted+=$4; deleted+=$6} END {print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}' 

在多行,以提高可讀性:

git log --shortstat | grep "files changed" | \ 
gawk '{files+=$1; inserted+=$4; deleted+=$6} END \ 
{print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}' 

我只是想它的git repo,對提交的10過去的日子(它也適用於Windows):

c:\prgs\vonc\git\git> 
git log --oneline --shortstat --since="10 days ago" | grep "files changed" | gawk '{files+=$1; inserted+=$4; deleted+=$6} END {print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}' 
files changed 47 lines inserted: 397 lines deleted: 30 

這同樣的技術(using gawk)可以讓您彙總等數據,如提交的每個作者的數量:

git log --pretty=format:%an | gawk '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'| gsort -r 

git log --pretty=format:%an | \ 
gawk '{ ++c[$0]; } END \ 
{ for(cc in c) printf "%5d %s\n",c[cc],cc; }'| gsort 

同樣,在混帳回購協議,在Windows上,它的工作:

c:\prgs\vonc\git\git> 
git log --pretty=format:%an --since="10 days ago" | gawk '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'| gsort 
    23 Junio C Hamano 
    8 Jeff King 
    3 Johannes Schindelin 

請注意,它有點矯枉過正,因爲它包含合併提交。
簡單將

c:\prgs\vonc\git\git> 
git shortlog -sn --no-merges --since="10 days ago" 
    8 Jeff King 
    6 Junio C Hamano 
    3 Johannes Schindelin 
相關問題