Gerrit REST API:无法使用_sortkey恢复查询

时间:2014-07-07 08:25:56

标签: json rest gerrit

我使用Gerrit REST API查询状态为"合并"的所有更改。我的问题是

https://android-review.googlesource.com/changes/?q=status:merged&n=2

其中" n = 2"将查询结果的大小限制为2.所以我得到了一个JSON对象,如:

enter image description here

当然还有更多结果。根据REST文档:

  

如果提供了n查询参数,并且存在与查询之外的查询匹配的其他更改,则最后一个更改对象具有_more_changes:true J​​SON字段集。调用者可以使用N查询参数恢复查询,提供最后一次更改的_sortkey字段作为值。

所以我用最后一次更改100309的_sortkey添加查询参数N.新查询是:

https://android-review.googlesource.com/changes/?q=status:merged&n=2&N=002e4203000187d5

有了这个新查询,我希望我能再获得2个新的查询结果,因为我提供了_sortkey作为我之前搜索结果的光标。

然而,这个新查询返回与上一个查询完全相同的结果,而不是我预期的接下来的两个结果,这真的很奇怪。似乎提供了" N = 002e4203000187d5"完全没有效果。

有人知道为什么使用_sortkey来恢复我的查询并不起作用吗?

2 个答案:

答案 0 :(得分:2)

我与谷歌的一位开发人员聊天,他确认_sortkey已经从他们在android-review和gerrit-review上运行的新版Gerrit中删除。 N =参数不再有效。文档将更新以反映这一点。

另一种方法是使用& S = x跳过x结果,我测试并运行良好。

答案 1 :(得分:1)

Gerrit v2.9中不推荐使用

sortkey -
请参阅 REST API - 更改 下的(Gerrit) ReleaseNotes-2.9.txt

  

[[sortkey-deprecation]]

     
      
  • [query changes]端点返回的结果现在使用偏移而不是sortkeys进行分页。      
        
    • 不推荐使用端点上的sortkeysortkey_prev参数   结果现在使用--limit-n)选项分页以限制结果数量,并使用-S选项设置起点。
    •   
    • 旧版索引版仍支持使用sortkeys查询,以便在客户拥有较旧的JS版本时启用在线重建索引。
    •   
  •   

另见这里 -
PSA: Removing the "sortkey" field from the gerrit-on-borg query interface

  

...
  我们的解决方案是杀死sortkey字段及其相关的搜索运算符(sortkey_before,sortkey_after和resume_sortkey)。

     

有两种方法可以实现类似的功能。

     
      
  1. 在查询中添加“& S =”以跳过固定数量的结果   (请注意,这会重新搜索,因此新结果可能已经跳过了   您可以两次处理相同的更改   resume_sortkey实现也是如此,
      所以你的代码应该已经能够处理这个了。)

  2.   
  3. 使用前/后操作符   而不是从最后返回的更改中获取sortkey字段和   在resume_sortkey运算符中使用它,从中获取更新的字段   最后返回的更改并在before运算符中使用它   (这与sortkey字段的语义略有不同,其中   当更改具有类似的更新时间时,使用更改编号作为决胜局。)

  4.         

    ...