Size: 3221
Comment:
|
Size: 3721
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
[:Setting Up A Subversion Repository: << Previous Page] | ["Main"] + ["What Is Subversion For"] .+ ["Setting Up A Subversion Repository"] .- SVNKit Architecture .+ ["Getting Started With SVNKit"] .+ ["Authentication"] .+ ["Managing Repository With SVNKit"] .+ ["Printing Out A Subversion Repository Tree"] .+ ["Printing Out File Contents"] .+ ["Printing Out Repository History"] .+ [:Committing To A Repository:Editing operation: committing to a repository] .+ [:Updating From A Repository:Editing Operation: receiving changes from a repository] .+ ["Replicating An Existing Repository"] .+ ["Managing A Working Copy"] |
Line 3: | Line 16: |
[:Getting Started With SVNKit: Next Page >>] | ---- |
["Main"]
- + ["What Is Subversion For"]
- + ["Setting Up A Subversion Repository"]
- - SVNKit Architecture
- + ["Getting Started With SVNKit"]
- + ["Authentication"]
- + ["Managing Repository With SVNKit"]
- + ["Printing Out A Subversion Repository Tree"]
- + ["Printing Out File Contents"]
- + ["Printing Out Repository History"]
+ [:Committing To A Repository:Editing operation: committing to a repository]
+ [:Updating From A Repository:Editing Operation: receiving changes from a repository]
- + ["Replicating An Existing Repository"]
- + ["Managing A Working Copy"]
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:
attachment:svnkit_architecture.png
That is there are two main layers in SVNKit:
A high-level layer to manage Working Copies. A [http://svnkit.com/kb/javadoc/org/tmatesoft/svn/core/wc/package-summary.html corresponding API] gives you an ability to manage Working Copies just like in the manner that the [http://svnbook.red-bean.com/nightly/en/svn.ref.html#svn.ref.svn Subversion command line client] does.
A low-level layer is similar to the [http://svnbook.red-bean.com/nightly/en/svn.developer.html#svn.developer.layerlib.ra 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 [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:
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:
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:
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 [http://svnbook.red-bean.com/nightly/en/svn.reposadmin.html#svn.reposadmin.basics.backends.fsfs FSFS]-type repositories over the file:/// protocol.