Differences between revisions 6 and 7
Revision 6 as of 2007-03-01 18:00:20
Size: 3781
Editor: nat
Comment:
Revision 7 as of 2008-02-20 18:59:38
Size: 4083
Editor: nat7
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
["Main"]
 + ["What Is Subversion For"]
 .+ ["Setting Up A Subversion Repository"]
[[Main]]
 + [[What_Is_Subversion_For|What Is Subversion For]]
 .+ [[Setting_Up_A_Subversion_Repository|Setting Up A Subversion Repository]]
Line 5: Line 5:
 .+ ["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"]
 .+ [[Getting_Started_With_SVNKit|Getting Started With SVNKit]]
 .+ [[Authentication]]
 .+ [[Managing_Repository_With_SVNKit|Managing Repository With SVNKit]]
  .+ [[Printing_Out_A_Subversion_Repository_Tree|Printing Out A Subversion Repository Tree]]
  .+ [[Printing_Out_File_Contents|Printing Out File Contents]]
  .+ [[Printing_Out_Repository_History|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|Replicating An Existing Repository]]
  .+ [[Managing_A_Working_Copy|Managing A Working Copy]]
Line 18: Line 18:
[[TableOfContents]] <<TableOfContents>>
Line 21: Line 21:
["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:
[[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:
Line 24: Line 24:
attachment:svnkit_architecture.png {{attachment:svnkit_architecture.png}}
Line 26: Line 26:
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.
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.
Line 31: Line 31:
The high-level API is similar to the commands of the ["Subversion"] native command line client: all operations for managing The high-level API is similar to the commands of the [[Subversion]] native command line client: all operations for managing
Line 34: Line 34:
[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.
[[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.
Line 39: Line 39:
[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).
[[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).
Line 44: Line 44:
Since v.1.1.0 ["SVNKit"] supports the following repository access schemes: Since v.1.1.0 [[SVNKit]] supports the following repository access schemes:
Line 46: Line 46:
attachment:access_protocols.png {{attachment:access_protocols.png}}
Line 49: Line 49:
As you can see on the diagram above, ["SVNKit"] supports two kinds of accessing a ["Subversion"] repository over network: As you can see on the diagram above, [[SVNKit]] supports two kinds of accessing a [[Subversion]] repository over network:
Line 54: Line 54:
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.
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.

Main


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:

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 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:

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.

SVNKit_Architecture (last edited 2008-02-20 19:01:29 by nat7)