This is a README.txt file for SVNKit - pure Java Subversion client library.

1. DESCRIPTION

SVNKit is a pure Java Subversion client library. 

2. LICENSING

SVNKit is open source product. The complete source code, documentation, and files required 
to build the library are available for download from our Web site at http://svnkit.com/

The TMate open source license permits you to use SVNKit at no charge under the condition 
that if you use the software in an application you redistribute, the complete source code for 
your application must be available and freely redistributable under reasonable conditions. 

If you do not want to release the source code for your application, you may purchase a license 
from TMate Software. For pricing information, or if you have further questions on licensing, 
please contact us at support@svnkit.com.

You may find the TMate open source license in COPYING file that is located within the same 
directory as this file or at http://svnkit.com/license.html

3. FEATURES

SVNKit allows to work with Subversion repositories and Subversion working copies. SVNKit features
direct repository access as well as support for all high level Subversion operation that are 
available with the command line Subversion client. 

This version of SVNKit supports all major Subversion 1.7.4 features.

This version of SVNKit supports both new (1.7, sqlite db) and old (1.6 and older) working copy formats 
as well as all versions of Subversion repositories since 1.0.

4. RESOURCES

SVNKit Web Site: http://svnkit.com/
SVNKit Documentation: http://svnkit.com/documentation.html
SVNKit Wiki: https://wiki.svnkit.com/
SVNKit JavaDoc: http://svnkit.com/javadoc/

SVNKit Mailing List: http://svnkit.com/support.html
SVNKit Issues Tracker: http://svnkit.com/tracker/

SVNKit Continuous Build Server: https://teamcity.svnkit.com/

5. CONTACTS

On all questions related to SVNKit please contact us at support@svnkit.com