This documentation relates to an earlier version of FishEye.
View

Unknown macro: {spacejump}

or visit the current documentation home.

Native Client

FishEye can use a native Subversion client installed on your system, but your client needs to be version 1.2 or later, and must include the JavaHL bindings. FishEye can use all of the protocols supported by your native client.

The JavaHL bindings include a Java .jar file, typically named javasvnhl.jar, and a dynamic library such as libsvnjavah-1.so or libsvnjavahl-1.dll. FishEye must be configured so it can find both the .jar and the dynamic library.

If the JavaHL dynamic library is in your library path (such as %PATH% on Windows), then FishEye will automatically find it. Otherwise you can tell FishEye where it is, or set the FISHEYE_LIBRARY_PATH environment variable before starting FishEye.

Acquiring native Subversion libraries for your operating system

Pre-compiled native clients are available for most platforms. The Subversion download page links to platform specific distributions. Ensure you get the binary that includes JavaHL bindings, as well as the standard package. Also ensure that the versions of the JavaHL and standard packages match.

  • Subversion for Windows:
    To install Subversion for Windows, visit this page
    You need to download the standard package as well as the JavaHL version. The standard package is named svn-X.Y.Z-setup.exe and the JavaHL installer file is named svn-win32-X.Y.Z_javahl.zip where 'X.Y.Z' refers to the version number (for example, svn-win32-1.4.6_javahl.zip at the time of writing).
  • Subversion for Fedora Linux:
    For Linux systems using the yum package manager (such as Fedora Core 3 and above) you can type the following:

    yum install subversion-javahl

    at the Linux command line interface to install the JavaHL bindings for Subversion. Note that this will also install the standard Subversion library, which is required.

  • Subversion for Ubuntu and Debian Linux:
    For Linux systems using the apt-get package manager (such as Debian and Ubuntu) you can type the following:

    apt-get install libsvn-javahl

    at the Linux command line interface to install the JavaHL bindings for Subversion. Note that this will also install the standard Subversion library, which is required.

Native Client Configuration

There are two ways you can configure the path to your Subversion client: Via the FishEye user interface, or by editing the config.xml configuration file.

Configuring your Native Client in the FishEye User Interface

You can configure your Subversion client in the FishEye Administration screens, under Admin > Server Settings > Subversion Client.

JAR

The path to the JavaHL .jar.

Dynamic library

The path to the dynamic library, if it is not already on your system's library path.
(warning)
Due to a bug in earlier versions of the JavaHL bindings, setting this value is ineffective unless you are using a Subversion client 1.2.3 or later.

Configuring your Native Client in the FishEye Configuration File

An alternative method to using the FishEye user interface is editing the <svn-config> section of your config.xml. If you change these settings, you need to restart FishEye.

Windows Platform Example (change path locations as required)

<svn-config jar="C:\subversion\lib\svn-javahl.jar" jnilib="C:\subversion\lib\libsvnjavahl-1.dll"/>

Mac OS X Platform Example (change path locations as required)

<svn-config jar="/opt/subversion/lib/svn-javahl/svn-javahl.jar" jnilib="/opt/subversion/lib/libsvnjavahl-1.dylib"/>

Linux Platform Example (change path locations as required)

<svn-config jar="/usr/share/subversion/lib/svn-javahl.jar" jnilib="/usr/lib/libsvnjavahl-1.so"/>

 

Performance Impact of Native Client

In general, using the JavaHL libraries should improve the speed of FishEye's indexing when compared to SVNKit, primarily because of the advantage of native code.  However, some customers have experienced more peak memory usage (some more than 2GB) during indexing when using JavaHL implementations due to greedier processing.  This is generally not a major concern, but your own performance requirements may vary.

If you need to allocate more than 2gb for the indexing to complete, please run Fisheye with a 64-bit JDK

11 Comments

  1. Anonymous

    Under centos 5.4, the javahl that can be installed with YUM does not work.

    Caused by: java.lang.ClassNotFoundException: org.tigris.subversion.javahl.LogMessageCallback
            at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
            ... 14 more
    Caused by: java.lang.ClassNotFoundException: org.tigris.subversion.javahl.LogMessageCallback

            at java.net.URLClassLoader$1.run(URLClassLoader.java:217)

            at java.security.AccessController.doPrivileged(Native Method)

            at java.net.URLClassLoader.findClass(URLClassLoader.java:205)

            at java.lang.ClassLoader.loadClass(ClassLoader.java:319)

            at java.lang.ClassLoader.loadClass(ClassLoader.java:264)

            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)

            ... 14 more

  2. Benson Margulies

    The Apache Subversion project no longer includes the javahl JAR file in their RPM and other packages. They assume that people like you will incorporate the JAR. Therefore, it would be a good thing if you would start shipping the JAR and update this page.

  3. Conor

    We ship svnkit with FishEye to provide a simple 100% java solution to svn integration. It requires no additional deployments, no additional configuration and works across multiple platforms.

    We're reticent to include the native JavaHL jar with FishEye itself. The deployed jar needs to be compatible with the rest of the Subversion installation in general and the supporting JNI library in particular. If the JNI library is not compatible, we'll be dealing with issues like UnsatisfiedLinkError as opposed to ClassNotFound errors. While there is some version latitude between the jar and the supporting library, if the deployed JNI library is too old (as would be the case for the CentOS poster above) we're back to the same problem.

    We have found, in general, that those Subversion installations that don't include or offer the jar generally also do not include the JNI shared library.

    1. Chad Barnes

      Unfortunately the SVNKit layer is not 100% functional.  See https://jira.atlassian.com/browse/FE-3577. And, in my experience, the native library (dll) is included in about every win32 distribution, but the jar is not.

      I think it is safe to say native JavaHL is 100% functional, but has its own configuration challenges.

  4. Anonymous

    Fisheye not starting after you followed these directions?

    Does the error start with:

    ERROR - Context initialization failed
    java.lang.NoClassDefFoundError: com/sun/jna/Library

    See http://confluence.atlassian.com/display/FISHKB/Fisheye+2.5+upgrade+fails+with+java.lang.NoClassDefFoundError

  5. Chad Barnes

    I recommend adding to the "Performance Impact of Native Client" section a recommendation to use the 64-bit native JavaHL library if repository indexing causes Fisheye to crash with an OutOfMemory error.  Our native client would throw an OutOfMemoryError when indexing, causing fecru to crash.  Switching to a 64-bit SVN distribution and 64-bit DLL resolved that issue.

  6. Chad Barnes

    Re: "If you need to allocate more than 2gb for the indexing to complete, please run Fisheye with a 64-bit JDK"

    I think it is important to note that a 64-bit SVN distribution with 64-bit DLL must be used in addition to the 64-bit SDK.  It is the SVN distribution that throws the OutOfMemory error.

  7. childnode

    1. The debian package is called libsvn-java without the hl in the end
      1. admin should use aptitude instead of apt-get to use the improved conflict management
      2. The path is JAR path is: /usr/share/java/svn-javahl.jar (see http://packages.debian.org/stable/i386/libsvn-java/filelist)
    2.  The Subversion download page is no longer available > has been moved
  8. Anonymous

    We have just migrated from Trac to JIRA/Confluence/FishEye. Are there plans for a native mac GUI for SVN like you provide for git (SourceTree)?

    1. childnode

      Why do you don't use SourceTree with git-svn?

      This is supported, works as expected, and on each "commit" user is able to check the box "push commits immediately to Subversion"

      I expect that a product like SourceTree will not implement native SVN support while svn is getting "deprecated" and the number of decentralized teams is growing each day.

      There are also good reasons to switch to hq-svn or git-svn to improve your team skills with these tools and slowly migrate to a DVCS without the "hard cut".

      If you're looking for a good GUI native SVN tool, see Versions or smartSVN where smartSVN is my favorite since it's available for all platforms and teams are not bound to a single OS.

      So "give git a hug" (wink)

  9. Anonymous

    We have several problems with SVNKit with other products as well as Fisheye/Crucible.

    About Atlassian specifically, the FishEye issue FE-1071 is terribly annoying.