如何通过 rest api 从 gerrit 获取所有更改 "submitted together"?

How to get all changes "submitted together" from gerrit via rest api?

Gerrit rest api 更改了端点并且有一个 submitted_together 选项。在 python 中,它会是这样的;

def get_changes_submitted_together(rest, changeid):
    try:
        return rest.get(f"/changes/{changeid}/submitted_together?o=NON_VISIBLE_CHANGES&o=CURRENT_REVISION")
    except requests.exceptions.HTTPError:
        raise RuntimeError(f"Provided change ({changeid}) cannot be found on remote gerrit server.")

现在,如果我确实有一个包含 10 个提交的提交链,并且我使用该链中间的更改 ID 调用端点,则此端点 returns 只有我要求的那个端点及其 parent 提交,而不是 child 提交。当然是有道理的,因为如果我现在转到 gerrit ui 并合并那个特定的中间提交,children 仍将保持未合并状态。

有没有办法通过 gerrit rest api 通过提供任何提交的更改 ID 从头到尾获得整个“关系”链?

我之前已经通过迭代所有打开的开放更改请求,获取它们的 parent 并向下迭代直到 parent 是它打算合并到的分支中的提交。但是,这是一种蛮力方法。

我当然可以检查本地分支并从中获取链信息,但我可能有一个用例,其中整个提交链在本地 git 存储库中不可用,仅作为远程 gerrit 服务器中的审查。 .

有什么建议吗?

尝试Get Related Changes

'GET /changes/{change-id}/revisions/{revision-id}/related'

change-id和对应的revision-id可以是链中的任意一个。我认为在你的情况下 revision-id 总是可以 current.