shell 有没有一种方法可以得到git仓库中一组文件的所有添加和删除的总和?

k3fezbri  于 2022-12-30  发布在  Shell
关注(0)|答案(2)|浏览(145)

我想知道在存储库的 * 整个生命周期 * 中,对 * 一组文件 * 进行了多少次 * 添加 * 和 * 删除 *,无论作者或提交者是谁。
有没有办法从git获取这些信息?或者有没有办法通过使用git命令和一些shell魔术来获取这些信息?

mv1qrgav

mv1qrgav1#

这里是一个尝试的起点,虽然可能还有更多的工作要做:

git rev-list --branches --parents |
while read hash parents; do
    # $hash is a commit; it has $parents as its parents
    set -- $parents
    for p do    # loop over all of $hash's parents
        git diff $p $hash --stat -- $pathlimiters
    done
done | awk '/files changed, / { print }'

输出将包含许多行,格式如下:

2 files changed, 10 insertions(+), 1 deletion(-)
 3 files changed, 924 insertions(+), 550 deletions(-)

修改awk代码(或者用您喜欢的任何语言编写代码),以找到插入和删除计数并将它们相加。
您可能还需要为根提交添加一个特殊情况(当$parents为空时),其中您将与the empty tree进行比较。

63lcw9qa

63lcw9qa2#

我使用这个简单的bash方法来计算git统计(CommitsAdditonsDeletions):

gitstats() {
author="${1:-DEFAULT AUTHOR}"
echo "Author: $author"
echo "Commits: $(git rev-list HEAD --author=$author --count)"
echo "Additions and Deletions: $(git log --author=$author --pretty=tformat: --numstat | grep -v '^-' | awk '{ add+=$1; rem$
} END { print add,
remove }')" 
}

它可以被称为:gitstats "author name"

相关问题