Home | Forums

EyeQL

FishEye contains a powerful query language called EyeQL.

query:
select revisions
(from (dir|directory) word)?
(where clauses)?
(order by date)?
(group by (file|dir|directory|changeset))?
(return return-clauses)?
clauses:
clause ((or|and|,) clause)*
Notes: "and" binds more tightly than "or". "," means "and"
clause:

(clauses)

not clause

path (not)? like word
Notes: word is an Ant-glob.

date in (( | [) dateExp, dateExp () | ])
Notes: The edges are inclusive if [ or ] are used, and exclusive if ( or ) is used.

date dateop dateExp
Notes: dateop can be <, >, <=, >=, =, == or != .

author = word

author in (word-list)

comment matches word
Notes: does a full-text search

comment = string
Notes: matches string exactly. Most comments end in a newline, remember to add \n at the end of your string.

comment =~ string
Notes: string is a regular expression

content matches word
Notes: does a full-text search, but at this time searches are restricted to HEAD revisions.

(modified | added | deleted)? on branch word
Notes: Selects all revisions on a branch.
modified excludes the branch-point of a branch.
added selects all revisions on the branch if any revision was added on the branch.
deleted selects all revisions on the branch if any revision was deleted on the branch.

tagged op? word
Notes: op can be <, >, <=, >=, =, == or != and defaults to == if omitted. These operators are "positional" and select revisions that appear on, after, and/or before the given tag.

between tags tag-range

after tag word

before tag word

is head (on word)?
Notes: this selects the top-most revision on any branch, if a branch is not specified

is ( dead | deleted )
Notes: means the revision was removed/deleted.

is added
Notes: means the revision was added (or re-added).

tag-range:
(( | [) T1:word , T2:word () | ])
A range of revisions between those tagged T1 and T2. The edges are inclusive if [ or ] are used, and exclusive if ( or ) is used. You can mix edge types, these are all valid: (T1,T2), [T1,T2], (T1,T2] and [T1,T2).
word:
any string, or any non-quoted word (that does not contain whitespace or any other seperators)
string:
A sequence enclosed in either " (double quotes) or ' (single quotes). The following escapes work: \' \" \n \r \t \b \f. Unicode characters can be escaped with \uXXXX. You can also specify strings in "raw" mode like r"foo" (similar to Python's raw strings, see Python's own documentation).
dateExp:
See here for more information on date formats.
return-clauses:
return-clause (, return-clause)*
A return clause signifies that you want control over what data is returned/displayed.
return-clause:
( path | revision | author | date | comment | csid | totalLines | linesAdded | linesRemoved )
( as word )?
The attribute to return, optionally followed by a name to use for the column.