转换更改号码以更改ID

时间:2016-11-04 10:12:11

标签: gerrit

是否有gerrit REST API将更改号转换为更改ID

例如:https://android-review.googlesource.com/#/c/23823/

将23823转换为I4f39e8d8cc22520cd36f83f8675a716cc1ade1d9

感谢。

3 个答案:

答案 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)