获取有关特定目录中行贡献的 Git 统计信息

Posted

技术标签:

【中文标题】获取有关特定目录中行贡献的 Git 统计信息【英文标题】:Get Git statistics about line contributions within specific directories 【发布时间】:2016-08-19 05:44:35 【问题描述】:

我希望看到统计数据告诉我哪些作者在给定目录中贡献了多少行

git-extras 和其他一些类似工具存在,但我无法确定是否可以使用它们(或其他任何东西)将我的统计信息限制在给定目录中。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以使用简短的脚本:

#!/bin/bash

git shortlog -s -- $1 | cut -c8- | while read i
do
    git log --author="$i" --pretty=tformat: --numstat -- $1 \
    | awk -v name="$i" ' add += $1; subs += $2; loc += $1 - $2  END  printf "%s: added lines: %s removed lines: %s total lines: %s\n", name, add, subs, loc '
done

叫它loc.sh 然后运行:loc.sh [目录/文件]

输出会是这样的:

名称1:添加行:10757 删除行:49 总行:10708 Nmae2:添加行:1193 删除行:94255 总行:-93062

查看更多 here 和 here

【讨论】:

这是否将输出限制到存储库中的单个目录,或者统计信息是否与整个存储库相关?如果没有,你能做到吗? ——这是问题的关键之一。如果是,那是哪一部分? 是的。当您运行脚本 loc.sh 时,将其作为 cmdline 中的参数提供所需的文件/目录。 (您可以在脚本本身中看到“-- $1”这使得 git 命令过滤所需的文件/目录) 确认!谢谢 --- 现在我必须研究一下您使用 bash 的方式,以便更好地理解它。【参考方案2】:

检查此 CLI 工具 (https://www.npmjs.com/package/whodid)

$ npm install whodid -g

然后,转到您的项目目录并输入以下内容

$ cd my-project
$ whodid

你也可以得到 JSON 格式的结果

$ whodid author --as-json=true

如果你愿意,不推荐,但你可以在合并提交中包含行。

$ whodid author --include-merge=true

如果你觉得某人的分数太高,你可以用'heavy'子命令查看原因。

$ whodid heavy --num2=20 --author="jeff <jeff@xahoo.com>"

【讨论】:

以上是关于获取有关特定目录中行贡献的 Git 统计信息的主要内容,如果未能解决你的问题,请参考以下文章

删除特定文件上的贡献者统计信息

Git“会计” [重复]

git常见操作---由简入深

获取 ext3 和其他文件系统的类似 nfsstat 的统计信息

如何在一行中获取带有简短统计信息的 Git 日志?

sql 获取特定表的IO统计信息