仅打印第一行的 Gerrit 查询选项

Gerrit query option to print just the first line

此脚本有效:

!#/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"
  1. gerrit 查询命令中是否有一个选项只打印第一行,这样我就可以避免在第 2 行中出现 | head -n 1?如果 gerrit_query_output 得到 {"type":"stats","rowCount":1,"runTimeMilliseconds":9,"moreChanges":false} 作为第二行,json 在 python 中解析失败。

  2. 有没有更好的方法在没有 Change-Id: 行的情况下获取 commitMessage,这样我就可以避免 | grep -v ^Change-Id:

1) 使用“jq”代替python获取提交信息:

ssh -p 29418 GERRIT-SERVER gerrit query --format=JSON --commit-message change:CHANGE-NUMBER | jq -r --raw-output '.commitMessage // empty'

2) 没有办法做到这一点。