11

我正在尝试将每个作者的每行贡献打印到 Git 存储库。

为此,我使用以下命令,改编自如何计算 Git 存储库中特定作者更改的总行数?

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.

我究竟做错了什么?

4

2 回答 2

10

好的,经过更多调查,我在 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
于 2014-08-25T07:29:14.557 回答
1

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

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

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

于 2014-08-22T14:29:06.573 回答