# Support for SVN Protocols

## Overview

In general all SVN repository access protocols are supported. The nature of the support can vary depending on the adapter you have chosen in your preferences. This document will attempt to outline those issues.

## file:// (ra_local)

The file:// protocol is only supported by the JavaHL adapter. If you are using the SVNKit adapter, it is recommended that you setup and run a local svnserve instance so that you may use the svn:// protocol.

## svn:// (ra_svn)

The svn:// protocol is fully supported by both adapters. There are no issues or considerations to take into account.

## svn+ssh:// (ra_svn)

The svn+ssh:// protocol is fully supported by both adapters. However there are significant differences in the implementation that should be taken into account.

JavaHL
  JavaHL uses the SVN libraries, consequently it is configured using the same techniques as the SVN command line. SSH is handled via an external client which has to be manually configured in the Runtime Configuration Area. Any support for prompting for a client certificate or passphrase is entirely dependent on the SSH client used. Consequently, using JavaHL in this scenario is best suited for those users that already have an SSH client configured and are using some form of SSH keyagent to manage connections.
SVNKit
  SVNKit implements SSH connections using the Ganymed Java SSH library. The Ganymed library only support the SSH-2 protocol and client certificates must be in the OpenSSH format. A major advantage to using SVNKit is that it will dynamically prompt you for all SSH connection information as shown here:

## http(s):// (ra_dav)

The http(s):// protocol is fully supported by both adapters. However there are subtle differences in the implementation that should be taken into account, primarily when dealing with SSL (https://) connections.

JavaHL
  JavaHL uses the SVN libraries for repository access, which means that it uses Neon and the OpenSSL library for accessing SSL-secured connections. Generally, this offers very good compatability with various HTTP servers, SSL certificates and implementations. JavaHL supports prompting the user to accept the server certificate, but it does not support prompting the user to provide a client certificate. Configuration of SSL certificates as well as HTTP proxy information can be performed in the Runtime Configuration Area.
SVNKit
  SVNKit implements http(s):// connections using the classes and methods that are part of J2SE. Some JDK versions don't support SSL server certificates longer than 1024 bytes or don't support certain Cypher Suites. If you're experiencing problems accessing a SVN repository over SSL connection (via https protocol) consider using the latest JDK version and upgrading the JDK JCE package (Cryptotgraphic Extension) to an "unlimited strenght" one. Read this article for more details on how to install JCE. Configuration of SSL certificates as well as HTTP proxy information can be performed in the Runtime Configuration Area. One notable benefit that SVNKit offers over JavaHL is that it supports prompting the user for SSL client certificates.
  In order to activate this feature you have to edit the "servers" file in the Runtime Configuration Area and add the following:

      [global]
      ssl-client-cert-prompt = yes

Related Tasks

Preferences: Select Client Adapter
Preferences: Specify Location of Configuration Area

Related Reference

SVN Runtime Configuration Area
SVNKit Configuration Settings