每个作者的 GIT 贡献(行)
Posted
技术标签:
【中文标题】每个作者的 GIT 贡献(行)【英文标题】:GIT contribution per author (lines) 【发布时间】:2014-10-16 10:18:10 【问题描述】:我正在尝试将每个作者的每行贡献打印到 Git 存储库。
为此,我使用以下命令,改编自 How to count total lines changed by a specific author in a Git repository?
git ls-tree -r -z --name-only HEAD -- */*.c | xargs -0 -n1 git blame \
--line-porcelain HEAD |grep "^author "|sort|uniq -c|sort -nr
但是,我收到以下错误:
fatal: cannot stat path 'HEAD': No such file or directory.
我做错了什么?
【问题讨论】:
【参考方案1】:好的,经过更多调查,我在 SO 上发现了这个。
git ls-files -z | xargs -0n1 git blame -w | perl -n -e '/^.*?\((.*?)\s+[\d]4/; print $1,"\n"' | sort -f | uniq -c | sort -n
答案来自Eric Z的支持
结果
234926 USER 1 32453 USER 2 2941234 USER 3
【讨论】:
【参考方案2】:这意味着您的表达式的第一部分没有给出任何结果。试试
git ls-tree -r -z --name-only HEAD -- */*.c
没有后半部分;可能这会给你空输出。修复该表达式以列出您要处理的文件...如果我在不包含任何 .c 文件的存储库中使用它;它给了我和你一样的错误。删除选项 */*.c
或将其修复为 */*.cpp
修复它(取决于您想要的结果)
【讨论】:
我刚刚得到一长串项目文件。不包含作者信息 如果您在没有*/*.c
部分的情况下使用整个命令,您仍然会遇到同样的错误吗?
如果不这样做,请添加第二部分等。直到出现错误;然后我们可以进一步调试:)以上是关于每个作者的 GIT 贡献(行)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Git 存储库中按作者计算每个文件路径名的提交次数?