= gerrit query

== NAME
gerrit query - Query the change database

== SYNOPSIS
[verse]
--
_ssh_ -p <port> <host> _gerrit query_
  [--format {TEXT | JSON}]
  [--current-patch-set]
  [--patch-sets | --all-approvals]
  [--files]
  [--comments]
  [--commit-message]
  [--dependencies]
  [--submit-records]
  [--all-reviewers]
  [--start <n> | -S <n>]
  [--]
  <query>
  [limit:<n>]
--

== DESCRIPTION

Queries the change database and returns results describing changes
that match the input query.  More recently updated changes appear
before older changes, which is the same order presented in the
web interface.  For each matching change, the result contains data
for the change's latest patch set, even if the query matched on an
older patch set (for example an older patch set's sha1 revision).

A query may be limited on the number of results it returns with the
'limit:' operator.  If no limit is supplied an internal default
limit is used to prevent explosion of the result set.  To obtain
results beyond the limit, the '--start' flag can be used to resume
the query after skipping a certain number of results.

Non-option arguments to this command are joined with spaces and
then parsed as a query. This simplifies calling conventions over
SSH by permitting operators to appear in different arguments.

Query operators may quote values using matched curly braces
(e.g. `reviewerin:{Developer Group}`) to sidestep issues with 2
levels of shell quoting (caller shell invoking SSH, and the SSH
command line parser in the server).

== OPTIONS
--format::
	Formatting method for the results. `TEXT` is the default,
	presenting a human readable display. `JSON` returns
	link:json.html#change[change attributes], one line
	per matching record, with embedded LFs escaped.

--current-patch-set::
	Include information about the current patch set in the results.
	Note that the information will only be included when the current
	patch set is visible to the caller.

--patch-sets::
	Include information about all patch sets visible to the caller.
        If combined with the --current-patch-set flag then the current patch
	set information will be output twice, once in each field.

--all-approvals::
	Include information about all patch sets visible to the caller along
	with the approval information for each patch set.  If combined with
	the --current-patch-set flag then the current patch set
	information will be output twice, once in each field.

--files::
	Support for listing files with patch sets and their
	attributes (ADDED, MODIFIED, DELETED, RENAMED, COPIED)
	and size information (number of insertions and deletions).
	Note that this option requires either the --current-patch-set
	or the --patch-sets option in order to give any file information.

--comments::
	Include comments for all changes. If combined with the
	--patch-sets flag then all inline/file comments are included for
	each patch set that is visible to the caller.

--commit-message::
	Include the full commit message in the change description.

--dependencies::
	Show information about patch sets which depend on, or are needed by,
	each patch set.

--all-reviewers::
	Show the name and email of all reviewers which are added to a change
	(irrespective of whether they have been voting on that change or not).

--submit-records::
	Show submit record information about the change, which
	includes whether the change meets the criteria for submission
	(including information for each review label).

--start::
-S::
	Number of changes to skip.

limit:<n>::
	Maximum number of results to return.  This is actually a
	query operator, and not a command line option.	If more
	than one limit: operator is provided, the smallest limit
	will be used to cut the result set.

== ACCESS
Any user who has SSH access to Gerrit.

== SCRIPTING
This command is intended to be used in scripts.

== EXAMPLES

Find the 2 most recent open changes in the tools/gerrit project:
----
$ ssh -p 29418 review.example.com gerrit query --format=JSON status:open project:tools/gerrit limit:2
{"project":"tools/gerrit", ...}
{"project":"tools/gerrit", ...}
{"type":"stats","rowCount":2,"runningTimeMilliseconds:15}
----

Skip number of changes:
----
$ ssh -p 29418 review.example.com gerrit query --format=JSON --start 42 status:open project:tools/gerrit limit:2
{"project":"tools/gerrit", ...}
{"project":"tools/gerrit", ...}
{"type":"stats","rowCount":1,"runningTimeMilliseconds:15}
----


== SCHEMA
The JSON messages consist of nested objects referencing the
link:json.html#change[change],
link:json.html#patchSet[patchset],
link:json.html#[account]
involved, and other attributes as appropriate.

Note that any field may be missing in the JSON messages, so consumers
of this JSON stream should deal with that appropriately.

== SEE ALSO

* link:user-search.html[Query Operators]
* link:json.html[JSON Data Formats]
* link:access-control.html[Access Controls]

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
