这是我在学习Gerrit的查询命令的时候看文献做的一些笔记,自己翻译了一下,以备后用。其中有些翻译的时候也是一知半解,如果错误希望指出。
Gerrrit查询
version v2.8.4-19-g4548330
NAME
gerrit query——查询修改数据库
SYNOPSIS(大纲)
'ssh' -p <port> <host> 'gerrit query'
[--format {TEXT | JSON}]
[--current-patch-set]
[--patch-sets | --all-approvals]
[--files]
[--comments]
[--commit-message]
[--dependencies]
[--submit-records]
[--]
<query>
[limit:<n>]
[resume_sortkey:<sortKey>]
DESCRIPTION(说明)
查询存储修改的服务器,然后返回符合输入查询条件的描述变化的结果。最新被更新的修改会出现在旧的修改之前,在网页接口中也会以相同的顺序展示。对于每个符合要求的修改,返回的结果包含修改的最新补丁集数据,即使查询匹配到了一个旧的补丁集(比如一个旧的补丁集的sha1版本)。
一次查询返回的结果的数量,可能被limit:
操作符所限制。如果没有提供,那么会使用内部的默认值来防止结果集的爆炸。为了获得超出限制的结果集,可以使用resume_sortkey:
操作符来重新对修改进行查询,而这个修改是符合上一次由先前结果集所得的修改。( To obtain results beyond the limit, the resume_sortkey: operator can be used to resume the query at the change that follows the last change of the prior result set.)
这个命令的非选项参数是由空格连接的,并且之后会被作为一个查询解析。通过允许操作符出现在不同的参数中这种方式,简化了通过SSH的调用约定。查询操作符可以使用匹配的花括号(例如,reviewerin:{Developer Group})来引用值来回避2个水平上的shell引用问题(调用者shell调用了SSH,然后SSH命令行在服务器中解析)。
OPTIONS(可选参数)
—format
针对结果的格式化方法。默认是TEXT,呈现为一个人们可读的展示。JSON返回修改属性,每一行是一个有着内嵌的逸出的LFs的匹配记录。
—current-patch-set
包含关于目前在结果中的补丁集的信息。
—patch-sets
包含所有关于补丁集的信息。如何和--current-patch-set
标志联合使用,那么目前的补丁集信息将会被输出两次,在各自的领域里有一次。
—all-approvals
包括所有的补丁集的信息以及每个补丁的批准信息集。如何和--current-patch-set
标志联合使用,那么目前的补丁集信息将会被输出两次,在各自的领域里有一次。
—files
支持列出文件补丁集和它们的属性(添加、修改、删除、重命名、复制)和大小信息(插入和删除的数量)的清单。注意,这个选项需要current-patch-set
或--patch-sets
选项来提供文件的信息。
—comments
包括了所有修改的评论。如果联合--patch-sets
标志使用则所有的内联/文件评论都会被包含到各个补丁集中。
—commit-message
包括完整的在修改描述中的提交消息。
—dependencies
显示关于被各个补丁集合依赖或需要的补丁集的信息。
—submit-records
显示关于修改的提交记录信息,其中包含这些修改是否满足提交的规则(包含各个审查标签的信息)。
limit:(n)
返回结果的最大数量。这实际上是一个查询操作符,而不是一个命令行选项。如果提供了超过一个limit:
运算符,那么最小的那个将会被使用来限制结果集。
resume_sortkey:(sortKey)
从这个排序键恢复结果。调用者需要传递最后一次先前结果集的修改的sortKey
来重新执行先前的查询。这实际上是一个查询操作符,而不是一个命令行选项。
ACCESS(接入权限)
任何拥有配置过的SSH公钥的用户。
SCRIPTING
这个命令是为了在脚本中使用。
EXAMPLES(例子)
在tools/gerrit
项目中找到2个最近被打开的修改:
$ ssh -p 29418 review.example.com gerrit query --format=JSON status:open project:tools/gerrit limit:2
{"project":"tools/gerrit", ...}
{"project":"tools/gerrit", ..., sortKey:"000e6aee00003e26", ...}
{"type":"stats","rowCount":2,"runningTimeMilliseconds:15}
重新执行相同的查询并获得最终的结果:
$ ssh -p 29418 review.example.com gerrit query --format=JSON status:open project:tools/gerrit limit:2 resume_sortkey:000e6aee00003e26
{"project":"tools/gerrit", ...}
{"project":"tools/gerrit", ...}
{"type":"stats","rowCount":1,"runningTimeMilliseconds:15}
SCHEMA
JSON信息包含了嵌套的结构,结构中包含了change、patchSet、account,还有其他的一些符合要求的属性。注意,任何的字段都可能会在JSON中缺失,所以这些JSON流的用户必须恰当的对待这些数据。