Best practices for Fisheye configuration
1. Ensure your Fisheye scan performance is as fast as possible.
Use the file://
protocol for fastest indexing performance. See Improve Fisheye scan performance for more information. (If you cannot install Fisheye on the server where Subversion is running, use svnsync to mirror the repository onto the Fisheye server).
2. If your repository is really large, consider starting at a sensible revision
This affects Subversion and Perforce. Do this when defining your Perforce or SVN repository.
3. Exclude directories if you don't need them.
For example, not everyone may need to access a developer's personal branch on the repository, so you can exclude it from the repository scan. You may also want to exclude large branches/tags that have been deleted (even though they are deleted in your repository, Fisheye will still index them as they once existed). Do this by using 'Allow' and 'Exclude' Admin settings.
4. Consider skipping Perforce Label processing if not important
- Perforce Labels can be slow to process, and thus cause Fisheye to index slowly in certain environments.
- Do this by defining the 'Skip Labels' Repository Detail.
5. Split your repositories into logical components if you can (For example, by product or project).
- A logical structure will make it simpler to exclude certain branches when they become less relevant to work in progress. This can garner significant performance gains.
- Avoid treating an SCM like a file system — don't alter the structure or move items around without a significant reason for doing so. Make these changes sparingly and as infrequently as possible.
- The more often you make major changes to the structure inside your SCM, the more scanning is required for Fisheye to keep track of its status. This especially applies to Subversion, because of its concept of 'cheap copies'. The result is that small changes can be essentially unmeasurable and cause a large amount of re-scanning.
6. Decide on your Subversion tag and branch conventions
Decide what conventions you are going to adopt for your subversion repositories and then stick to them. It's best to stick to one of the standard conventions recommended by Subversion. Best practices for Subversion integration can be found here.
7. Exclude tags and/or branches that you delete and recreate often.
You may have a branch or tag that you delete and recreate often, for example a latest tag which holds the latest release. Fisheye will take a long time to index this tag/branch as it needs to index its entire history, which can be very large. It is recommended that you exclude this directory from being indexed. See the documentation on the 'Excludes' option.
8. Avoid using the text $Log$
in your CVS commit messages.
This is because Fisheye does not handle the $Log
RCS expansion keyword correctly. Some diff results (and line numbers in diffs) may appear incorrect in files where $Log is used.
9. Avoid using symbolic links to refer to your Fisheye install directory location.
See this existing Knowledge Base document for more information.
10. Configure your index threads & memory usage to an appropriate level.
See the page Tuning Fisheye for instructions and the related memory guide, Fix out of Memory Errors.