我想从存储库中获取代码“性能”指标,即关于两个树状点之间随时间变化的文件数量,插入和删除次数的摘要。
通过阅读其他人的建议和git的文档,我有两种累加数字的方法。
两者都吐出了一些不错的数字,但是我对不同的总数感到惊讶,我想知道为什么会这样。在我自己的一个存储库中,差异非常大(以千计)。
为什么-shortstat 与-numstat 的总数彼此不同,而即使文件数量大,后者的报告也比前者少?是因为-numstat 不计数的二进制文件,内部差异时上下文行的数量还是合并的处理方式?
以openssl 1.1.0稳定分支为例:
condition2
吐出
git log --shortstat --no-merges --find-renames --pretty="%H" OpenSSL_1_1_0-pre6..OpenSSL_1_1_0i \
| grep -E "files? changed" \
| awk 'BEGIN {inserted=0; deleted=0} {commits+=1; files+=$1} $5~/^insertions?/ {inserted+=$4} $5~/^deletions?/ {deleted+=$4} $7~/^deletions?/ {deleted+=$6} END {print "commits:", commits, "* files changed:", files, "* insertions(+):", inserted, "* deletions(-):", deleted}'
commits: 1629 * files changed: 8100 * insertions(+): 65709 * deletions(-): 25421
吐出
git log --numstat --no-merges --find-renames --pretty="%H" OpenSSL_1_1_0-pre6..OpenSSL_1_1_0i \
| awk 'NF==1 {commits+=1} NF==3 {files+=1; inserted+=$1; deleted+=$2} END {print "commits:", commits, "* files changed:", files, "* insertions(+):", inserted, "* deletions(-):", deleted}'