此脚本有效:
!#/bin/bash
gerrit_query_output=$(ssh -p 29418 my_review-server.com gerrit query --format=JSON --commit-message change:66664 | head -n 1)
commit_message=$(echo $gerrit_query_output | python -c "import sys, json; print json.load(sys.stdin)['commitMessage']" | grep -v ^Change-Id:)
echo "commit msg= $commit_message"
gerrit query命令中是否有一个选项只能打印第一行,所以我可以避免第2行中的| head -n 1
?如果gerrit_querry_output将{"type":"stats","rowCount":1,"runTimeMilliseconds":9,"moreChanges":false}
作为第二行,则python中的json解析失败。
有没有更好的方法来获取没有Change-Id:
行的commitMessage,所以我可以避免| grep -v ^Change-Id:
答案 0 :(得分:0)
1)使用“jq”而不是phthon来获取提交消息:
ssh -p 29418 GERRIT-SERVER gerrit query --format=JSON --commit-message change:CHANGE-NUMBER | jq -r --raw-output '.commitMessage // empty'
2)没有办法做到这一点。