我正在使用 request.get 来获取 Json,并想使用最新的补丁集和扩展名 /revisions/(patchSetNumber)/files 再次执行此操作以查找所有修改的文件。我无法弄清楚如何通过请求找到补丁集 ID。
我尝试通过 url/details 扩展进行搜索,但无法找到修订选项卡或补丁集选项卡
是对的,Gerrit REST API 的
/details
端点不提供补丁集 ID。要查找补丁集 ID,需要执行以下操作:
-
从
/details
端点获取更改 ID:
如所述,已经拥有包含
/details
信息的 URL。从该 JSON 响应中,可以提取更改 ID,该 ID 位于
"_number"
字段下。
-
使用更改 ID 查询
/changes/<CHANGE-ID>/revisions/
端点:
这将返回该更改的所有修订(补丁集)的列表。每个修订都将具有其自己的 ID(补丁集 ID)和其他元数据。
- 识别最新的补丁集:
响应将按时间倒序排列。第一个修订将是最新上传的修订。从该修订中,可以提取
"_number"
字段下的补丁集 ID。
- (可选)使用补丁集 ID 获取文件列表:
获取补丁集 ID 后,可以使用
/changes/<CHANGE-ID>/revisions/<PATCHSET-ID>/files/
端点检索该特定补丁集中已修改的文件列表。
示例代码(使用 Python requests 库):
import requests
# Gerrit 实例的基准 URL
BASE_URL = "https://your-gerrit-instance.com/a"
# 包含 /details 信息的 URL
details_url = f"{BASE_URL}/changes/<CHANGE-NUMBER>/details"
# 从 /details 端点获取 JSON 响应
response = requests.get(details_url)
data = response.json()
# 提取更改 ID
change_id = data["_number"]
# 使用更改 ID 获取修订列表
revisions_url = f"{BASE_URL}/changes/{change_id}/revisions/"
response = requests.get(revisions_url)
revisions_data = response.json()
# 获取最新的补丁集 ID
latest_patchset_id = revisions_data[0]["_number"]
# 使用补丁集 ID 获取文件列表(可选)
files_url = f"{BASE_URL}/changes/{change_id}/revisions/{latest_patchset_id}/files/"
response = requests.get(files_url)
files_data = response.json()
# 打印文件列表
print(files_data)
注意:
-
将
your-gerrit-instance.com
替换为的 Gerrit 实例的实际 URL。 -
将
<CHANGE-NUMBER>
替换为实际的更改编号。
通过遵循这些步骤,可以从 Gerrit REST API 中检索补丁集 ID 并使用它来访问其他端点,例如检索特定补丁集中的已修改文件列表。
标签:python,gerrit From: 78790523