是否有gerrit REST API将更改号转换为更改ID
例如:https://android-review.googlesource.com/#/c/23823/
将23823转换为I4f39e8d8cc22520cd36f83f8675a716cc1ade1d9
感谢。
答案 0 :(得分:5)
使用“更改”端点搜索更改编号。例如:
curl -s --request GET --user user https://gerrit-server/a/changes/?q=change:32151
)]}'
[
{
"id": "code~master~I64f1c892c13a9bad903955678f104c34f36d1079",
"project": "code",
"branch": "master",
"hashtags": [],
"change_id": "I64f1c892c13a9bad903955678f104c34f36d1079",
"subject": "This is an example",
"status": "MERGED",
"created": "2016-11-03 19:15:36.000000000",
"updated": "2016-11-03 23:02:53.475000000",
"submittable": false,
"insertions": 80,
"deletions": 29,
"_number": 32151,
"owner": {
"_account_id": 3
}
}
]
然后获取“change_id”信息。例如:
curl -s --request GET --user user https://gerrit-server/a/changes/?q=change:32151 | sed 1d | jq --raw-output ".[] | .change_id"
I64f1c892c13a9bad903955678f104c34f36d1079
更多信息here。
答案 1 :(得分:0)
除了MarceloÁviladeOliveira的答案之外,您可以使用ssh api(默认情况下在端口29418上),它提供了多个单行JSON字符串更改的复杂描述。
第一个条目是您需要的条目,因此您可以使用shell utils或已经使用JSON解析器进行处理:
ssh -o ForwardX11=no -p 29418 gerrit-server gerrit query --current-patch-set --format=JSON 23823 | head -1 | jq --raw-output ".id"
I64f1c892c13a9bad903955678f104c34f36d1079
如果您需要反向,则可以将较长的Change-Id提供给同一个API,并使用相同的Change-Id为所有匹配的更改获取多行。
答案 2 :(得分:0)
我提供了将pygerrit2与Gerrit REST API结合使用以将变更号转换为变更ID的方法。
这是我的python代码。
import sys
from pygerrit2 import GerritRestAPI, HTTPBasicAuth
auth = HTTPBasicAuth(username, password)
rest = GerritRestAPI(url='http://review.xxxxxx.com:8080', auth=auth)
change_num = "1234"
info = rest.get("/changes/?q=change:{}".format(change_num))
change_id = info[0]['change_id']
print(change_id)