Git:获取每天更改的行数

时间:2011-11-16 15:51:28

标签: git

我想每天和/或每周在git存储库中添加/删除/更改行的图表。我想要计算提交次数。

是否有可以生成此类图表的工具(gitstats没有)?或者,使用哪个git命令我可以生成一个我可以轻松解析的输出?

谢谢!

6 个答案:

答案 0 :(得分:27)

也许是这样的:

$ git diff --shortstat "@{1 month ago}" 
 7 files changed, 29 insertions(+), 6 deletions(-)

(正如你所看到的,我在一个非常陈旧的存储库上试过这个。)

请注意,这会将当前工作目录与当前分支在本地计算机上一个月前指向的内容进行比较。

修改:要获取某个日期范围内分支master上所有提交的统计信息,您可以使用

git log --after=2011-01-01 --before=2011-01-31 --format=format: --shortstat master

答案 1 :(得分:26)

#!/bin/bash                                                                                                                                                                         
a=""                                                                                                                                                                                
b=""                                                                                                                                                                                
for i in $(seq 1 10)                                                                                                                                                                
do                                                                                                                                                                                  
    b=$(git diff --shortstat "@{ $i day ago }")                                                                                                                                     
    if [[ "$b" != "$a" ]]; then                                                                                                                                                     
        echo $i "day ago" $b                                                                                                                                                        
    fi                                                                                                                                                                              
    a=$b                                                                                                                                                                            
done 

输出

1 day ago 2 files changed, 144 insertions(+), 21 deletions(-)
3 day ago 2 files changed, 227 insertions(+), 73 deletions(-)

the gist

答案 2 :(得分:5)

我只是在存储库中需要累积的diffstat一段时间而不依赖于reflog(因为repo是刚刚克隆的)。因此我提出了这个:

( eval $(git log --pretty="%H" --since="2 day" | while read line; do if [[ -z ${first} ]]; then first=${line}; echo "export first=${first}"; fi; echo "export last=${line}"; done; ) ; git diff --stat ${first} ${last}; )

您可以轻松修改“2天”以获得其他内容:)

答案 3 :(得分:4)

这是一个bash脚本,用于计算每周更改的行总数:

Week,Lines Changed
2016-12-21,5989
2016-12-28,17179

输出为CSV格式,如下所示:

curl -X POST --upload-file send.txt \
https://na2.docusign.net/restapi/v2/accounts/xxx/envelopes \
-H "Accept: application/json" \
-H "Content-Type: multipart/form-data; boundary=AAA" \
-H "X-DocuSign-Authentication: \
<DocuSignCredentials><SendOnBehalfOf>...</SendOnBehalfOf><Username>..</Username><Password>...</Password><IntegratorKey>...</IntegratorKey></DocuSignCredentials>"

答案 4 :(得分:2)

gnmerritt's answer改编,此脚本将为每个日历日生成多行添加和删除行。

#!/bin/bash

ds() {
  date --date="$1 days ago" +%Y-%m-%d
}

BRANCH=master # your branch here

echo "Date,LinesAdded,LinesDeleted"
for day in $(seq 1 10)
do
  lines=$(git --no-pager log --after=$(ds $day) --before=$(ds $(($day - 1))) --format=format: --numstat $BRANCH  | awk '/([0-9]+).*([0-9]+).*/{s+=$1; t+=$2} END {printf "+"; printf s;printf ",-"; printf t;}')
  if [[ "$lines" != "+,-" ]]; then
      echo "$(ds $day),$lines"
  else
      echo "$(ds $day),0,0"
  fi
done

(Link: Github Gist)

答案 5 :(得分:0)

我的上述脚本版本,每天的统计数据,格式正确的输出......

a