FishEye


 

Overview

Your source code repository contains an abundance of valuable information, but it is not always easy to extract. Let FishEye tame your repository. Put your repository to work.

Directory View

The Browse View lets you explore the revisions, files and directories in your repository. This page helps you quickly navigate to the file you are looking for, as well as presenting useful information about the directory you are looking at.

The list of subdirectories are shown in the left-hand column. This will display subdirectories recursively, if there is enough room.

The list of files are shown in the right-hand column. You can sort the list of files name, age and author.

Recent Changes

The top of the right-hand column shows the most recent changesets for this directory subtree. You can also find a link to an RSS feed for the recent changes in this directory subtree.

Line History Graph

This graph shows the total line-count of MAIN over time for this directory subtree. This line-count does not include binary files (-kb files), but does include every other file. If you have a branch-constraint specified, then the line-count history of that branch is also shown.

Constraint Mode

You can specify a constraint that controls the information that is shown in the Browse View.

Branch
Will only show files and recent-changes on that branch.
Author
Displays the most-recent revision in each file that was checked in by the given author. Only shows recent-changes checked in by the given author.
Tag
Only shows files/revisions that are tagged with the given tag.
Date
Only shows revisions and changesets that were created on or before that date. Must be of the form YYYY-MM-DD, YYYY-MM or YYYY (you can use / instead of -). (Note: will support hours/mins/seconds in a future version)

Changelog

The Changelog allows you to browse the changes made to your repository chronologically. It provides a calendar in the left-hand column to allow you to navigate to any time in the history of your repository. You can also drill-down into a subdirectory using the directory tree in the left-hand column.

The changesets are shown in the right-hand column. They are orded most-recent-first.

You can move forward/backward in time using the controls at the top (and bottom) of the right-hand column. A timeline is also shown, highlighting where in time the changesets on this page occur. Clicking on this timeline will navigate you to that point in time.

Constraint Mode

You can specify a constraint that controls the information that is shown in the Changelog.

Branch
Will only show changesets on that branch.
Author
Only shows changesets checked in by the given author.
Tag
Only shows changesets that contain revisions tagged with the given tag.
Date
Only shows changesets that were created on or before that date. Must be of the form YYYY-MM-DD, YYYY-MM or YYYY (you can use / instead of -). (Note: will support hours/mins/seconds in a future version)

File History View

The File History View shows the different revisions of a file.

Branch History

This is a diagram of the branches and revisions of this file. Clicking on the diagram will focus the window to that branch/revision.

Line History Graph

This graph shows the total line-count of MAIN over time for this file. If you have a branch-constraint specified, then the line-count history of that branch is also shown.

Arbitrary Diffs

This allows you to request a diff between any two revisions of the file. You can use revision numbers or tag-names.

Search

Ant globs

FishEye supports a powerful type of regular expression for matching files and directories (same as the pattern matching in Apache Ant). These expressions use the following wildcards:

?
Matches one character (any character) (not including path seperators)
*
Matches zero or more characters (not including path seperators)
**
Matches zero or more path segments

Remember that Ant globs match paths, not just simple filenames. If the pattern does not start with a path seperator (a / or \), then the pattern is considered to start with /**/. If the pattern ends in a / then ** is automatically appended. A pattern can contain any number of wildcards. (Also see the Ant documentation.)

Examples:

*.txt
Matches /foo.txt, /bar/foo.txt; but not /foo.txty, /bar/foo.txty/.
/*.txt
Matches /foo.txt; but not /bar/foo.txt.
dir1/file.txt
Matches /dir1/file.txt, /dir3/dir1/file.txt, /dir3/dir2/dir1/file.txt.
**/dir1/file.txt
Same as above.
/**/dir1/file.txt
Same as above.
/dir3/**/dir1/file.txt
Matches /dir3/dir1/file.txt, /dir3/dir2/dir1/file.txt; but not /dir3/file.txt, /dir1/file.txt,
/dir1/**
Matches all files under /dir1/.

Date Formats

A date has the general form of either DATE[+-]TIMEZONE[+-]DURATION or DATECONSTANT[+-]DURATION. The TIMEZONE and DURATION parts are both optional.

TIMEZONE can be an offset from GMT HHMM or HH:MM, or simply Z. If no timezone is given, then the FishEye-server's configured timezone is used.

DATE can be either of the following:

YYYY-MM-DDThh:mm:ss
Specifies a time and date (seperated by a T). The seconds part may contain a fractional component. A / can be used instead of - as a seperator.
YYYY-MM-DD
Specifies 00:00:00 on the given date. A / can be used instead of - as a seperator.

DATECONSTANT can be any of:

now
This very instant (at the time the expression was evaluated).
today
todaygmt
The instant at 00:00:00 today (server-time* or GMT)
thisweek
thisweekgmt
The instant at 00:00:00 on the first day of this week (Sunday is considered the first day) (server-time* or GMT)
thismonth
thismonthgmt
The instant at 00:00:00 on the first day of this month (server-time* or GMT)
thisyear
thisyeargmt
The instant at 00:00:00 on the first day of this year (server-time* or GMT)

* The timezone used for server-time is part of the FishEye configuration

The syntax for DURATION is similar to the XML Schema duration type. It has the general form PnYnMnDTnHnMnS. See section 3.2.6 of XML Schema Datatypes document for more details.

EyeQL reference

query
select revisions
(from (dir|directory) word)?
where clauses
(group by (file|dir|directory|changeset))?
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.