Indexing a repository in Subversion takes a very long time. Especially if you have the Subversion repositories stored on an NFS and the size is over 15 gigs. Below are some performance improvements that worked for the repositories I’ve dealt with and some workarounds that might not have been previously documented.
For performance, if you have the repository on an NFS share that is also pointed to by the serving mechanism you should duplicate the repository locally using svnsync. This helps remove some of the overhead when dealing with the live filesystem on the NFS share.
Additionally, using PostgreSQL or MySQL in place of HSQLdb is always helpful! The new versions support these external databases, this reduces CPU usage immensely.
If you have a ton of code (who doesn’t?), tag versions, then remove the versions at some point in a single merge you’ll have to reduce the block size of the repository as it will eat a lot of Memory as it indexes all the files that have been deleted.
If you run into the problems with certain revisions not being indexed and the scanner getting hung in an infinite loop, and get exceptions like this:
com.cenqua.fisheye.rep.DbException
com.cenqua.fisheye.rep.RepositoryClientException
com.cenqua.fisheye.util.VisitorException
com.cenqua.fisheye.rep.DbException
sun.io.MalformedInputException
What you need to do, in Linux anyway, is set the LANG environment variable to UTF-8 and restart the Fisheye server. I had this problem and it took forever to find a solution to it. The environment variable was previously set to: UTF-8.en_us on the server I was dealing with.