每位作者的GIT贡献(行)

时间:2014-08-22 14:14:09

标签: git line-count

我试图将每位作者的每行贡献打印到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.

我做错了什么?

2 个答案:

答案 0 :(得分:7)

好的,经过更多调查后我发现了这个。

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

的支持

RESULT

    234926 USER 1
     32453 USER 2
   2941234 USER 3

答案 1 :(得分:1)

这意味着表达式的第一部分没有给出任何结果。尝试

git ls-tree -r -z --name-only HEAD -- */*.c

没有后者;可能会给你空输出。修复该表达式以列出您要处理的文件...如果我在不包含任何.c文件的存储库中使用它;它给了我和你一样的错误。删除选项*/*.c或将其修复为*/*.cpp修复它(取决于您想要的结果)