Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 从git日志或git show解析批准的_Json_Git_Git Log - Fatal编程技术网

Json 从git日志或git show解析批准的

Json 从git日志或git show解析批准的,json,git,git-log,Json,Git,Git Log,使用--pretty=format,您可以根据需要格式化git日志或git showstdout 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/},]/}]/'

使用
--pretty=format
,您可以根据需要格式化
git日志
git 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/},]/}]/'
git日志\
--pretty=格式:'{%n“提交”:“%H”,%n“作者”:“%an”,%n“日期”:“%ad”,%n“消息”:“%f”%n},'\
$@ | \
perl-pe“BEGIN{print”[“};END{print”]\n“}”\
perl-pe's/},]/}]/'
上面的示例解析作者、提交、日期和消息值。我们如何解析批准拉取请求时可用的
Approved by
的值


即使是也没有提到

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

假设
批准人
行如下所示:

批准人:好人

下面是一个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\”
行。基本上,它首先获取所有commit sha1值,然后解析它们以获取每个commit的字段,然后格式化输出。

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

假设
批准人
行如下所示:

批准人:好人

下面是一个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\”
行。基本上,它首先获取所有commit sha1值,然后解析它们以获取每个commit的字段,然后格式化输出。

谢谢!我将测试,但我希望你认为<>代码>:可以不止一次地存在。@ AbdennourTOUMI抱歉,但是我的BASH技能无法处理由行批准的多个<代码>。我试试看。谢谢!我将测试,但我希望你认为<>代码>:可以不止一次地存在。@ AbdennourTOUMI抱歉,但是我的BASH技能无法处理由行批准的多个<代码>。我试试看。