This page last changed on Oct 05, 2007 by mquail.
FishEye contains a powerful query language called EyeQL. EyeQL is an intuitive SQL-like language that allows you to write your own specific queries.
EyeQL allows you to perform complex searches either within the Advanced Search or incorporated in scripts from the FishEye API.
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.
',' (comma) means 'and'. |
clause: |
(clauses)
not clause
path (not)? like word
Notes:
word is an Antglob.
date in ((|[) dateExp, dateExp ()|])
Notes: The edges are
inclusive if [ or ] is used.
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 new line, so 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.
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 != .
op 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 no branch is specified.
is ( dead | deleted )
Notes:
Means the revision was removed/deleted.
is added
Notes:
Means the revision was added (or re-added).
csid = word
Notes:
Selects all revisions for the given changeset ID. |
tag-range: |
((|[) T1:word, T2:word ()|])
Notes:
A range of revisions between those tagged T1 and T2.
The edges are:
inclusive if [ or ] is used.
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 white space or any other separators. |
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). |
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 | isBinary | totalLines | linesAdded | linesRemoved | isAdded | isDeleted | isCopied | isMoved | tags )
( as word )?
The attribute to return, optionally followed by a name to use for the column. |
Examples
The following examples demonstrate using EyeQL to extract information from your repository.
Find files removed on the Ant 1.5 branch:
select revisions where modified on branch ANT_15_BRANCH and is dead group by changeset
As above, but just return the person and time the files were deleted:
select revisions where modified on branch ANT_15_BRANCH and is dead return path, author, date
Find files on branch and exclude delete files:
select revisions where modified on branch ANT_15_BRANCH and not is deleted group by changeset
Find changes made to Ant 1.5.x after 1.5FINAL:
select revisions where on branch ANT_15_BRANCH and after tag ANT_MAIN_15FINAL group by changeset
Find changes made between Ant 1.5 and 1.5.1:
select revisions where between tags (ANT_MAIN_15FINAL, ANT_151_FINAL] group by changeset
As above, but show the history of each file separately :
select revisions where between tags (ANT_MAIN_15FINAL, ANT_151_FINAL] group by file
Find Java files that are tagged ANT_151_FINAL and are head on the ANT_15_BRANCH: (i.e. files that haven't changed in 1.5.x since 1.5.1)
select revisions from dir /src/main where is head and tagged ANT_151_FINAL and on branch ANT_15_BRANCH and path like *.java group by changeset
Find changes made by conor to Ant 1.5.x since 1.5.0
select revisions where between tags (ANT_MAIN_15FINAL, ANT_154] and author = conor group by changeset
|