[<< Previous Page | Setting Up A Subversion Repository] [Next Page >> | Getting Started With Svnkit] [{TableOfContents title='Table of 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: [{Image src = 'svnkit_architecture.png' caption = 'SVNKit Architecture' }] That is there are two main layers in __SVNKit:__ * A high-level layer to manage Working Copies. A [corresponding API | http://svnkit.com/kb/javadoc/org/tmatesoft/svn/core/wc/package-summary.html] gives you an ability to manage Working Copies just like in the manner that the [command line client | http://svnbook.red-bean.com/nightly/en/svn.ref.html#svn.ref.svn Subversion] does. * A low-level layer is similar to the [Subversion Repository Access Layer | http://svnbook.red-bean.com/nightly/en/svn.developer.html#svn.developer.layerlib.ra]. 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 | http://svnkit.com/kb/javadoc/org/tmatesoft/svn/core/wc/SVNUpdateClient.html] 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 | http://svnkit.com/kb/javadoc/org/tmatesoft/svn/core/io/package-summary.html] 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: [{Image src = 'access_protocols.png' caption = 'SVNKit Access Protocols'}] !!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 | http://svnbook.red-bean.com/nightly/en/svn.reposadmin.html#svn.reposadmin.basics.backends.fsfs]-type repositories over the file:/// protocol'''.