【问题标题】:How to get all changes "submitted together" from gerrit via rest api?如何通过rest api从gerrit“一起提交”所有更改?
【发布时间】:2020-07-08 20:31:45
【问题描述】:

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 调用端点,则此端点仅返回我要求的那个及其父提交,而不是子提交.当然是有道理的,因为如果我现在去 gerrit ui 并合并那个特定的中间提交,孩子们仍然不会被合并。

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

我之前已经通过迭代所有打开的打开更改请求、获取它们的父级并向下迭代来完成此操作,直到父级是其打算合并到的分支中的提交。但是,这是一种蛮力的方法。

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

有什么建议吗?

【问题讨论】:

    标签: python git gerrit


    【解决方案1】:

    试试Get Related Changes

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多