Best practices Subversion integration
SVN Client
Atlassian recommends using the bundled SVNkit client instead of the native SVN client.
Connection Protocol
The http/s protocol has the slowest performance during the initial scan. The svn protocol (svn://) is faster and the file protocol (file:///) is the fastest.
Therefore if you find your initial scan takes an extended amount of time (more than a day or two), you should consider switching over from the http/s protocol to the svn
or file
protocol to define the location of your SVN repository. (Use svnsync to mirror the repository onto the Fisheye server, so that you can access it with the file protocol.). In order for SVN protocol to work you need to have set up an svnserve based server. To learn how to do it, see here (MacOS, Linux) or here (Windows).
svnsync
is not an atomic protocol. It generally performs the commit as the svn sync user and then updates the revprops
to match the original commit, under some circumstances, this can cause the wrong user to be attributed as the author of a changeset. More information available at Wrong User Reported When Indexing SVN Mirror Repository.
On this page:
SVN Branch/Tag Structure
Ensure the SVN branch and tag structure has been selected correctly in Fisheye repository configuration. If Fisheye does not know which files are tags and branches, it will treat all files as trunk files. This can significantly increase the effective size of your repository and the initial scan time as well as impact runtime performance. Please refer to this guide for verifying SVN symbolic rules.
Fisheye Index Structure
Fisheye is a caching application. It caches all the repository information. Therefore, big repositories do take time to be indexed.
This index/repository cache is stored in the var directory defined in the Fisheye configuration, under a subdirectory named var/cache/name of the repository. For example, the indexes for the repository FE
are under var/cache/FE, with one subdirectory for each index:
- Metadata index is stored in
var/cache/FE/idx0
- Content index is stored in
var/cache/FE/idx1
- DiffText index is stored in
var/cache/FE/idx2
Limit Indexing Scope
You can limit the repository content that Fisheye will index by:
- Setting a start revision to start indexing from a particular revision.
- Exclude certain file types/paths that are not required to be indexed.
- Turn OFF the store-diff info property. Some of the benefits are:
- Speed up indexing; Fisheye won't have to retrieve and index all diffs.
- Reduce disk footprint. The diff index files can become quite large, so disabling diffs can lead to significant savings.
- Reduce disk I/O, particularly write operations. If disk I/O is a performance bottleneck, disabling diff indexing could help.
- Reduce the load on your SVN server during indexing, but you'll only notice the difference if you've got a lot of commit activity going on.
Indexing Thread Configuration
Check for the indexing thread configuration.
Fisheye uses one thread each for incremental and initial indexing for each repository. Three is a recommended thread count. Having more threads will add extra overhead to the server when indexing, and reduce performance.