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.

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.

Further Reading

Was this helpful?

Thanks for your feedback!

Why was this unhelpful?

Have a question about this article?

See questions about this article

Powered by Confluence and Scroll Viewport