我使用Gerrit REST API查询状态为"合并"的所有更改。我的问题是
https://android-review.googlesource.com/changes/?q=status:merged&n=2
其中" n = 2"将查询结果的大小限制为2.所以我得到了一个JSON对象,如:
当然还有更多结果。根据REST文档:
如果提供了n查询参数,并且存在与查询之外的查询匹配的其他更改,则最后一个更改对象具有_more_changes:true JSON字段集。调用者可以使用N查询参数恢复查询,提供最后一次更改的_sortkey字段作为值。
所以我用最后一次更改100309的_sortkey添加查询参数N.新查询是:
https://android-review.googlesource.com/changes/?q=status:merged&n=2&N=002e4203000187d5
有了这个新查询,我希望我能再获得2个新的查询结果,因为我提供了_sortkey作为我之前搜索结果的光标。
然而,这个新查询返回与上一个查询完全相同的结果,而不是我预期的接下来的两个结果,这真的很奇怪。似乎提供了" N = 002e4203000187d5"完全没有效果。
有人知道为什么使用_sortkey来恢复我的查询并不起作用吗?
答案 0 :(得分:2)
我与谷歌的一位开发人员聊天,他确认_sortkey已经从他们在android-review和gerrit-review上运行的新版Gerrit中删除。 N =参数不再有效。文档将更新以反映这一点。
另一种方法是使用& S = x跳过x结果,我测试并运行良好。
答案 1 :(得分:1)
sortkey -
请参阅 REST API - 更改 下的(Gerrit) ReleaseNotes-2.9.txt:
[[sortkey-deprecation]]
- [query changes]端点返回的结果现在使用偏移而不是sortkeys进行分页。
- 不推荐使用端点上的
sortkey
和sortkey_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)。有两种方法可以实现类似的功能。
在查询中添加“& S =”以跳过固定数量的结果 (请注意,这会重新搜索,因此新结果可能已经跳过了 您可以两次处理相同的更改 resume_sortkey实现也是如此,
所以你的代码应该已经能够处理这个了。)- 醇>
使用前/后操作符 而不是从最后返回的更改中获取sortkey字段和 在resume_sortkey运算符中使用它,从中获取更新的字段 最后返回的更改并在before运算符中使用它 (这与sortkey字段的语义略有不同,其中 当更改具有类似的更新时间时,使用更改编号作为决胜局。)
...