【问题标题】:Parse Approved-By from git log or git show从 git log 或 git show 解析 Approved-By
【发布时间】:2018-04-28 06:19:57
【问题描述】:

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

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

即使official documentation 也没有提及

【问题讨论】:

    标签: json git git-log


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我会测试,但我希望你考虑到Approved-By: 可以存在不止一次。
    • @AbdennourTOUMI 抱歉,处理多个 Approved-by 行超出了我的 bash 技能。我试试看。
    猜你喜欢
    • 2013-03-15
    • 2016-02-09
    • 2011-09-13
    • 1970-01-01
    • 2018-08-08
    • 2012-03-18
    • 2017-02-06
    • 1970-01-01
    • 2017-07-11
    相关资源
    最近更新 更多