我前段时间写了/偷了一个脚本,找出了Git仓库中特定文件的当前“所有者”。
#!/bin/bash
git blame --line-porcelain "$@" | sed -n 's/^author //p' | sort | uniq -c | sort -rn
它显示git blame
的结果,并根据每个用户修改的行数对其进行排序。
结果如下所示:
125 Joe
16 Fred
16 Alice
7 Jane
4 Bob
我的问题是,如何修改此脚本以递归整个仓库而不是单个文件?
答案 0 :(得分:5)
您可以使用git ls-tree
列出Git中的所有文件。
以下是您的脚本执行的操作,但适用于master
分支上的所有文件。
git ls-tree -r master --name-only | xargs -I {} git blame --line-porcelain {} | sed -n 's/^author //p' | sort | uniq -c | sort -rn