如何使用git shortlog在单个目录中的多个存储库上聚合用户提交统计信息?

米歇尔·米凯利迪斯(Michail Michailidis)

我有一个包含很多Git repo子目录的目录,我想积累类似于以下内容的信息

git shortlog -sne --no-merges

对于其中的所有回购,将按用户的总提交次数对其进行排序。

例如回购1:

430 Author 1 <[email protected]>
 20 Author 2 <[email protected]>

例如回购2:

123 Author 1 <[email protected]>
 92 Author 2 <[email protected]>

总结果:

453 Author 1 <[email protected]>
112 Author 2 <[email protected]>

使用git内置工具可以做到吗?

我能够走出repo文件夹,并为单个文件夹运行它:

git -C repoFolder shortlog -sne --no-merges
博士

cd循环进入每个子目录并使用以下命令处理git shortlog输出awk

for d in *; do git -C $d shortlog -ens --no-merges; done |
    awk '{name_email=""; for (i=2; i<=NF; i++) {name_email=name_email " " $i}; count_by_user[name_email]+=$1} END {for (name_email in count_by_user) print count_by_user[name_email], name_email}'

awk脚本说明:

name_email="";

对于每个输入行:从空变量开始name_email

for (i=2; i<=NF; i++) {name_email=name_email " " $i};

将以2个空格隔开的所有字段合并为name_email即合并所有名称和电子邮件字段。

count_by_user[name_email]+=$1

创建一个新的关联数组,count_by_user并在第一行的值(提交计数)的每一行中增加值(默认值为0)。

END {for (name_email in count_by_user) print count_by_user[name_email], name_email}

在最后打印结果:遍历count_by_user索引(名称+电子邮件),打印计算出的计数器,打印名称+电子邮件。结果未排序打印。可以在awk脚本中排序,也可以使用进行后处理| sort -nr

用的gawk版本开发awk

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

指向多个git存储库的单个目录

如何使用git存储库中已存在的文件创建新的git存储库,并保持提交

如何防止用户从远程git存储库中删除提交

从Git存储库生成统计信息

如何克隆,获取或稀疏检出git存储库中的单个目录或目录列表?

如何使用git更改远程存储库

如何使用Git引用特定的存储库?

如何使用SSH访问git存储库?

如何在包含Git存储库的Git中存储目录?

我可以使用git-svn从Subversion存储库中的单个目录创建Git存储库吗?

如何在现有存储库上使用git annex?

提交后,如何 gitignore git 存储库中的所有单个文件扩展名文件?

2个提交如何在git存储库中具有相同的文件信息?

如何使用Windows版Git在Git Bash中更改目录?

如何使用 EGit 在 Eclipse 的 GIT 存储库中忽略已提交的文件?

如何使用tortiosegit在git中创建用户?

如何使用JGit获取存储库统计信息

如何使用git备份多个目录中的文件?

如何在Windows上使用git pull获得多个存储库?

使用单个git存储库中的功能标记管理多个代码库

多个Git存储库上的单个只读视图

如何git提交单个文件/目录

如何创建包含多个目录的 git 存储库?

Git - 如何在使用“git cherry”时过滤提交

如何列出使用git / git flow提交的文件

如何使用ssh使用nodegit克隆git存储库

如何使用Git修改非HEAD提交?

如何使用 git rebase 移動提交?

如何使用git从github检索单个文件