["Main"]


TableOfContents

SVNKit Architecture

["SVNKit"] is a pure (100%) [http://java.sun.com Java] client library for working with data versioned by the ["Subversion"] version control system right within [http://java.sun.com Java] applications. The library structure can be represented as following:

attachment:svnkit_architecture.png

That is there are two main layers in ["SVNKit"]:

High-level layer

The high-level API is similar to the commands of the ["Subversion"] native command line client: all operations for managing Working Copies are logically divided and combined in different SVN*Client classes. For example, all WC update operations (check out, update, switch, etc.) are performed by the single [http://svnkit.com/kb/javadoc/org/tmatesoft/svn/core/wc/SVNUpdateClient.html SVNUpdateClient] class. Arguments which are accepted by methods of these classes are similar to arguments of the ["Subversion"] command line client. When an access to a repository is indeed required, the high-level layer uses the low-level one.

Low-level layer

[http://svnkit.com/kb/javadoc/org/tmatesoft/svn/core/io/package-summary.html This layer] represents an abstract ["Subversion"] repository access protocol layer. There're two important things about this layer:

Repository access protocols supported by SVNKit

Since v.1.1.0 ["SVNKit"] supports the following repository access schemes:

attachment:access_protocols.png

Remote access

As you can see on the diagram above, ["SVNKit"] supports two kinds of accessing a ["Subversion"] repository over network:

Local access

Also since v.1.1.0 ["SVNKit"] is able to work with a Subversion repository on a local machine (via file:///). Although there is one limitation: ["SVNKit"] can work only with [http://svnbook.red-bean.com/nightly/en/svn.reposadmin.html#svn.reposadmin.basics.backends.fsfs FSFS]-type repositories over the file:/// protocol.