【问题标题】:Is there a way to retrieve all commits from the Gerrit REST API?有没有办法从 Gerrit REST API 检索所有提交?
【发布时间】:2016-03-28 23:01:40
【问题描述】:

根据 Gerrit API 的官方 doc,如果您有特定的提交 ID,则应该按项目访问提交。

一个使用pygerrit的例子:

rest.get(r'/projects/psydev-lis/commits/dab837369ab0623f5869f500c199a23fd3249b82')

问题是我的任务是提取所有提交并将它们上传到数据库中以便可以跟踪它们。我们在任何地方都没有包含所有提交 ID 的数据库供我查询和迭代。有没有人有使用 Gerrit 的经验可以帮助我找出批量加载所有提交数据的最佳方法?

我遇到的另一个问题是,由于 API 限制,我一次只能提取 500 个更改,并且无法跟踪您何时查看了所有更改。

【问题讨论】:

    标签: python gerrit


    【解决方案1】:

    我对 gerrit 了解不多,但是你不应该能够做一个普通的 git clone 并从那里获取提交信息(git log)吗?

    【讨论】:

      【解决方案2】:

      我自己没有使用过 pygerrit,但我使用了 Java equivalent version,它允许您以这种方式查询 Gerrit 项目的 500 次更改(提交):

      GerritRestApi.changes().query(serverURL + "project:projectName+branch:master+status:merged").get();
      

      如果您添加标签 &S=x,其中 x 是您要开始查看的提交数量的偏移量,如果您知道项目中的提交总数,则可以遍历整个提交列表.
      例如,如果您在 Gerrit 项目中总共有 5000 次提交:

      int offset = 4500;
      List<ChangeInfo> list = new ArrayList<>();
      while(offset >= 0){
          //Gets 500 commits from the offset and adds it to a list
          list.addAll(GerritRestApi.changes().query(serverURL + "project:projectName&S=" + offset).get());
          offset -= 500;
      }
      

      请记住,这是上面链接中的 Java 客户端实现,它的语法并不完全正确。但这可能会帮助您大致了解如何迭代提交。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-20
        • 1970-01-01
        • 2017-05-17
        • 1970-01-01
        • 2013-05-26
        相关资源
        最近更新 更多