首页 > 解决方案 > 从 git 日志创建报告

问题描述

梦想是创建一个脚本来运行我的存储库并创建一个报告。我希望报告包含存储库、它们的子模块、与每个 repo 关联的合并 PR 以及这些 PR 的更新文件列表。这将在 master 上的两个给定日期之间产生。我一直在看这样的东西(其中哈希代表第一天的第一次合并和另一天的最后一次合并):

git log --format='%h - %s' --stat a123456...c123456 > report

我遇到的问题之一——我不确定这是否可以用 git 完成,或者事后处理报告是否更好——目前这会带回太多信息。也就是说,我得到了每个 PR 涉及的所有文件的列表。我真正想要的是一个精简列表,其中仅列出给定文件的最新更新。目前我得到这样的东西:

c123456 - 这是第三次合并 (#3) ../file4

b123456 - 这是第二次合并 (#2) ../file1 ../file3
../file4

a123456 - 这是第一次合并 (#1) ../file1 ../file2
../file3 ../file4
我真正想要的是这样的:

c123456 - 这是第三次合并 (#3) ../file4

b123456 - 这是第二次合并 (#2) ../file1 ../file3

a123456 - 这是第一次合并 (#1) ../file2

任何帮助,将不胜感激!

标签: bashgitgithubawksed

解决方案


awk救援!

$ awk -v RS= -F'\n' '{for(i=1;i<=NF;i++) printf "%s", $i=!a[$i]++?($i ORS):""; print ""}' file

c123456 - this is the third merge (#3)
../file4

b123456 - this is the second merge (#2)
../file1
../file3

a123456 - this is the first merge (#1)
../file2

推荐阅读