# SVNKit

SVNKit es una biblioteca de software, puro Java para trabajar con el sistema de control de versión Subversion. Es software libre gratuito para su uso en proyectos de software libre pero requiere la compra de una licencia comercial para usarlo en desarrollo de software comercial. Implementa prácticamente todas las funciones de Subversion y proporciona una API para trabajar con copias de trabajo de Subversion, y acceder y manipular los repositorios Subversion.

## Características

Las principales características de SVNKit son:
* Acceso al repositorio sobre protocolos http(s)://, svn(+ssh):// y file://.
* Soporte para todas las operaciones de copia de trabajo.
* Administración de repositorios: operaciones de creación, carga, descarga y reproducción.
* API de bajo nivel que permite interactuar con el repositorio de Subversion directamente en el nivel de protocolo Subversion.
* Completa implementación de la API de JavaHL.
* SVNKit puede funcionar al menos en Windows, Mac OS X, Linux, BSD, OS/2 y OpenVMS.
* SVNKit es compatible con JDK 1.4.
Características disponibles en el cliente nativo de Subversion, pero no presentes en SVNKit:
* Acceso local (file://) a repositorios basados en Berkeley DB (SVNKit solo proporciona acceso local al tipo predeterminado de repositorios, FSFS).
* Acceso experimental "serf" HTTP (SVNKit solo proporciona soporte para acceso de DAV).
* Algunos de los métodos de autenticación HTTP (por ejemplo, SSPI) no son totalmente compatibles con la última versión de SVNKit.

## Cliente de línea de comandos

Parte de la biblioteca de SVNKit es un cliente de línea de comandos de Subversion implementado sobre SVNKit. Es compatible con el cliente de línea de comandos nativo de Subversion y puede utilizarse en entornos donde no es posible instalar cliente nativo Subversion o desde aplicaciones (por ejemplo, secuencias de comandos de Apache Ant) que no podían depender de la presencia nativa de Subversion.

## Competencia

JavaHL es un contenedor JNI (JNI wrapper) del código Subversion nativo C. JavaHL puede utilizarse en lugar de SVNKit en la mayoría de los casos de uso.
Sin embargo, SVNKit implementa la API JavaHL y así contenedor SVNKit y subversión JNI podría utilizarse simultáneamente para que el usuario pueda elegir lo que convenga mejor a su entorno. Una comparación justa de SVNKit y JavaHL se encontró en libro de Subversion. SVNKit y JavaHL tiene sus propias ventajas y desventajas.

## Licencias

SVNKit implementa un esquema de licencia dual. De forma predeterminada, SVNkit está licenciado bajo una licencia con términos similares a los de GPL, lo cual significa, en general, que no hay restricciones o limitaciones en el uso de SVNKit siempre que se utilice en un proyecto de Open Source.
Para proyectos de código cerrado, debe adquirirse una licencia comercial.

## Historia

En 2005, una compañía de software llamada TMate Software Ltd. anunció la versión 1.0.0 de JavaSVN, una Biblioteca de cliente Subversion puramente Java. Desde entonces, el proyecto se ha convertido en SVNKit.
Las versiones de SVNKit anteriores a 0.9.3 se liberan bajo los términos de la licencia BSD, sistema de licencias que más tarde se cambió a licencia dual.