我想每天和/或每周在git存储库中添加/删除/更改行的图表。我不想要计算提交次数。
是否有可以生成此类图表的工具(gitstats没有)?或者,使用哪个git命令我可以生成一个我可以轻松解析的输出?
谢谢!
答案 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(-)
答案 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
答案 5 :(得分:0)
我的上述脚本版本,每天的统计数据,格式正确的输出......
a