json - 从 git log 或 git show 解析 Approved-By

标签 json git git-log

使用--pretty=format,您可以根据需要格式化git loggit show stdout。

git log \
--pretty=format:'{%n  "commit": "%H",%n  "author": "%an <%ae>",%n  "date": "%ad",%n  "message": "%f"%n},' \
$@ | \
perl -pe 'BEGIN{print "["}; END{print "]\n"}' | \
perl -pe 's/},]/}]/'

上面的示例解析作者、提交、日期、消息值。我们如何解析在 pull 请求被批准时可用的 Approved-by 值。

甚至是official documentation没有提到这一点

最佳答案

Approved-by 不是内置字段,因此 Git 没有占位符。我们可以使用其他方法来获取字段并格式化输出。

假设 Approved-by 行如下所示:

Approved-by: Someone Nice

这是一个 bash 示例:

for commit in $(git log --pretty=%H);do
  echo -e "{\n\
    \"commit\": \"$commit\",\n\
    \"author\": \"$(git log -1 $commit --pretty=%an)\",\n\
    \"date\": \"$(git log -1 $commit --pretty=%cd)\",\n\
    \"message\": \"$(git log -1 $commit --pretty=%f)\",\n\
    \"approved-by\": \"$(git log -1 $commit --pretty=%b | grep Approved-by | awk -F ': ' '{print $NF","}' | xargs echo | sed -e 's/,$//')\"\n\
},"
done | \
perl -pe 'BEGIN{print "["}' | \
sed -e '$s/},/}]/'

它需要改进才能满足您的实际需求,尤其是 \"approved-by\" 行。基本上它首先获取所有提交的 sha1 值,然后解析它们以获取每个提交的字段,然后格式化输出。

关于json - 从 git log 或 git show 解析 Approved-By,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47300390/

相关文章:

php - 阅读 JSON/PHP/Android 中的段落

git - rebase 是否会阻止 Git 中的 pull 请求?有什么陷阱吗?

Git Merge - 二进制文件冲突解决

python - 使用 Bamboo 时重新标记后,Git 标签链接到旧提交

git - 忘记使用 `--squash`,现在提交历史一团糟。我怎样才能收拾这个烂摊子?

git - 对于每个提交哈希使用 git show

arrays - 当标签中的字符串等于 JSON 数组中的数据时,如何循环 JSON 中的数据

javascript - Backbone 集合 toJSON 返回集合对象

laravel - 无法在 Gitlens 中看到文件历史记录(在特定项目上)

json - 将 vb.net 字符串转换为 Json 对象?