我试图将每位作者的每行贡献打印到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.
我做错了什么?
答案 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
修复它(取决于您想要的结果)