Using Patchew Search

The general form of search string is a list of terms separated with space:

QUERY = TERM TERM ...

Each term can be either a plain keyword, or a predict in the form of PRED:EXP, where PRED is the predefined filter and EXP is the parameters to be applied to the filter. As a simple example:

bugfix from:Bob to:George age:>1w

to search emails titled as 'bugfix' (a subject keyword filter) from Bob (a sender filter) to George (a recipient filter) before 1 week ago (an age filter).

or

bugfix from:Bob is:reviewed not:obsoleted

to search all emails from Bob that have "bugfix" in subject, and have been reviewed but is not obsoleted (by a new revision of this series). Because there are syntax shortcut for some predicts, it can be simplified as:

from:Bob fix +reviewed -tested

Supported filter types

Search by age

  • Syntax: age:AGE
  • Syntax: >AGE
  • Syntax: <AGE

Filter by age of the message. Supports "d" (day), "w" (week), "m" (month) and "y" (year) as units. Examples:

  • age:1d
  • age:>2d
  • age:<1w
  • <1m
  • >1w

Search by series state

Syntax:

  • is:reviewed - all the patches in the series is reviewed
  • is:obsolete or is:old - the series has newer version
  • is:complete - the series has all the patches it contains
  • is:merged - the series is included in the project's git tree
  • is:pull - the series is a pull request
  • is:applied - a git tree is available for the series
  • has:replies - the series received a reply (apart from patches sent by the submitter)

Example:

is:reviewed

"not:X" is the opposite of "is:X". "+X" and "-X" are shorter synonyms of "is:X" and "not:X" respectively.


Search addresses

  • Syntax: from:ADDRESS
  • Syntax: to:ADDRESS

Compare the address info of message. Example:

from:alice to:bob

Search by result

Syntax:

  • pending:NAME, failure:NAME, running:NAME - any result with the given name is in the pending/failure/running state
  • success:NAME - all results with the given name are in the success state (and there is at least one result with the given name)

where NAME can be e.g. "git", "testing", "testing.TEST-NAME"

Example:

success:git
failure:testing.FreeBSD

Search by review state

Syntax:

  • accept:USERNAME or ack:USERNAME - the series was marked as accepted by the user
  • reject:USERNAME or nack:USERNAME - the series was marked as reject by the user
  • review:USERNAME - the series was marked as accepted or rejected by the user

USERNAME can be "me" to identify the current user


Reverse condition

  • Syntax: !TERM

Negative of an expression. Example:

!is:reviewed     (query series that are not reviewed)
!has:replies     (query series that have not received any comment)

Search by message id

  • Syntax: id:MESSAGE-ID

Exact match of message-id. Example:

id:<1416902879-17422-1-git-send-email-user@domain.com>

or

id:1416902879-17422-1-git-send-email-user@domain.com

Search by text

  • Syntax: KEYWORD

Search text keyword in the email message. Example:

regression