从git log或git show解析Approved-By

时间:2017-11-15 06:00:45

标签: json git git-log

使用--pretty=format,您可以根据需要设置git loggit show标准格式。

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

上面的示例解析了author,commit,date,message values。我们如何解析拉取请求被批准时可用的Approved-by的值。

即使official documentation也未提及

1 个答案:

答案 0 :(得分:2)

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

假设Approved-by行看起来像:

  

批准人:好人

这是一个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值,然后解析它们以获取每个提交的字段,然后格式化输出。