有没有办法从Gerrit REST API检索所有提交?

时间:2016-03-28 23:01:40

标签: python gerrit

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

使用pygerrit的示例:

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

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

我遇到的另一个问题是,由于API限制,我一次只能进行500次更改,并且无法跟踪何时看到所有这些更改。

2 个答案:

答案 0 :(得分:0)

我对gerrit了解不多,但你不应该做一个正常的git克隆并从那里获取提交信息(git log)吗?

答案 1 :(得分:0)

我自己没有使用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客户端实现,并不完全是语法正确的。但这可能有助于您了解如何遍历提交。