- - SVNKit Architecture
Contents
SVNKit Architecture
SVNKit is a pure (100%) Java client library for working with data versioned by the Subversion version control system right within Java applications. The library structure can be represented as following:
That is there are two main layers in SVNKit:
A high-level layer to manage Working Copies. A corresponding API gives you an ability to manage Working Copies just like in the manner that the Subversion command line client does.
A low-level layer is similar to the Subversion Repository Access Layer. It represents a driver for direct working with a Subversion Repository.
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 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
This layer represents an abstract Subversion repository access protocol layer. There're two important things about this layer:
It does not deal with WCs at all, since WC is a higher layer than this one. This layer knows how to speak to Subversion repositories via different protocols (in fact, this layer implements such protocols).
- Data structure is handled by this layer as an abstract data hierarchy, what gives an ability to represent more sophisticated (than just files and directories) abstractions as a tree-like hierarchy and keep such a hierarchy under version control.
Repository access protocols supported by SVNKit
Since v.1.1.0 SVNKit supports the following repository access schemes:
Remote access
As you can see on the diagram above, SVNKit supports two kinds of accessing a Subversion repository over network:
svn://, this also includes svn+xxx:// schemes (and svn+ssh:// in particular)
http://, this also includes secure https:// connections
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 FSFS-type repositories over the file:/// protocol.