Git log JSON *包含已更改的文件*

时间:2016-06-29 17:39:38

标签: json git perl

我需要获取格式化为JSON的git log命令的输出。我喜欢Git log output to XML, JSON, or YAML?中建议的方法,使用命令here在顶部使用自定义git log pretty formatter和轻薄的perl处理层:

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/},]/}]/'

这对于获取这些特定字段非常有用,但我还需要使用JSON输出中包含的--name-status标志返回的已更改文件列表。

我尝试了各种方法,但我对如何解决这个问题感到茫然。我的直觉告诉我,我错过了一些明显的东西。有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我已将--name-only参数支持添加到原始Noah Sussman的脚本中,因此您可以使用此命令获取已更改文件的列表:

git log2json --name-only

修改后的脚本为here

答案 1 :(得分:0)

我对Perl知之甚少。这是我获取提交的已更改文件的方法。希望它有所帮助。

git log -1 <sha1> --pretty=%h --name-only | tail -n +3