org.tmatesoft.svn.core.io
Class SVNRepositoryFactory
public abstract class SVNRepositoryFactory
SVNRepositoryFactory is an abstract factory that is responsible
for creating an appropriate
SVNRepository driver specific for the
protocol to use.
Depending on what protocol a user exactly would like to use
to access the repository he should first of all set up an
appropriate extension of this factory. So, if the user is going to
work with the repository via the custom
svn-protocol (or
svn+xxx) he initially calls:
...
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
...
SVNRepositoryFactoryImpl.setup();
...
From this point the
SVNRepositoryFactory knows how to create
SVNRepository instances specific for the
svn-protocol.
And further on the user can create an
SVNRepository instance:
...
String url = "svn://host/path";
SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url));
...
| Supported Protocols | Factory to setup |
| svn://, svn+xxx:// | SVNRepositoryFactoryImpl (org.tmatesoft.svn.core.internal.io.svn) |
| http://, https:// | DAVRepositoryFactory (org.tmatesoft.svn.core.internal.io.dav) |
| file:/// (FSFS only) | FSRepositoryFactory (org.tmatesoft.svn.core.internal.io.fs) |
Also
SVNRepositoryFactory may be used to create local
FSFS-type repositories.
static SVNRepository | create(SVNURL url)- Creates an SVNRepository driver according to the protocol that is to be
used to access a repository.
|
static SVNRepository | create(SVNURL url, ISVNSession options)- Creates an SVNRepository driver according to the protocol that is to be
used to access a repository.
|
static SVNURL | createLocalRepository(File path, String uuid, boolean enableRevisionProperties, boolean force)- Creates a local blank FSFS-type repository.
|
static SVNURL | createLocalRepository(File path, String uuid, boolean enableRevisionProperties, boolean force, boolean pre14Compatible)- Creates a local blank FSFS-type repository.
|
static SVNURL | createLocalRepository(File path, boolean enableRevisionProperties, boolean force)- Creates a local blank FSFS-type repository.
|
protected abstract SVNRepository | createRepositoryImpl(SVNURL url, ISVNSession session)
|
protected static boolean | hasRepositoryFactory(String protocol)
|
protected static void | registerRepositoryFactory(String protocol, SVNRepositoryFactory factory)
|
create
public static SVNRepository create(SVNURL url)
throws SVNException Creates an
SVNRepository driver according to the protocol that is to be
used to access a repository.
The protocol is defined as the beginning part of the URL schema. Currently
SVNKit supports only
svn:// (
svn+ssh://) and
http:// (
https://)
schemas.
The created
SVNRepository driver can later be
"reused" for another
location - that is you can switch it to another repository url not to
create yet one more
SVNRepository object. Use the
SVNRepository.setLocation()
method for this purpose.
An
SVNRepository driver created by this method uses a default
session options driver (
ISVNSession.DEFAULT) which does not
allow to keep a single socket connection opened and commit log messages
caching.
url - a repository location URL
- a protocol specific SVNRepository driver
SVNException - if there's no implementation for the specified protocol
(the user may have forgotten to register a specific
factory that creates SVNRepository
instances for that protocol or the SVNKit
library does not support that protocol at all)
create
public static SVNRepository create(SVNURL url,
ISVNSession options)
throws SVNException Creates an
SVNRepository driver according to the protocol that is to be
used to access a repository.
The protocol is defined as the beginning part of the URL schema. Currently
SVNKit supports only
svn:// (
svn+ssh://) and
http:// (
https://)
schemas.
The created
SVNRepository driver can later be
"reused" for another
location - that is you can switch it to another repository url not to
create yet one more
SVNRepository object. Use the
SVNRepository.setLocation()
method for this purpose.
This method allows to customize a session options driver for an
SVNRepository driver.
A session options driver must implement the
ISVNSession interface. It manages socket
connections - says whether an
SVNRepository driver may use a single socket connection
during the runtime, or it should open a new connection per each repository access operation.
And also a session options driver may cache and provide commit log messages during the
runtime.
url - a repository location URLoptions - a session options driver
- a protocol specific SVNRepository driver
SVNException - if there's no implementation for the specified protocol
(the user may have forgotten to register a specific
factory that creates SVNRepository
instances for that protocol or the SVNKit
library does not support that protocol at all)
createLocalRepository
public static SVNURL createLocalRepository(File path,
String uuid,
boolean enableRevisionProperties,
boolean force)
throws SVNException Creates a local blank FSFS-type repository. This is just similar to
the Subversion's command:
svnadmin create --fs-type=fsfs REPOS_PATH.
The resultant repository is absolutely format-compatible with Subversion.
If
uuid is
null or not 36 chars
wide, the method generates a new UUID for the repository. This UUID would have
the same format as if it's generated by Subversion itself.
If
enableRevisionProperties is
true
then the method creates a
pre-revprop-change executable file inside
the
"hooks" subdir of the repository tree. This executable file
simply returns 0 thus allowing revision property modifications, which are not
permitted, unless one puts such a hook into that very directory.
If
force is
true and
path already
exists, deletes that path and creates a repository in its place.
A call to this routine is equivalent to
createLocalRepository(path, uuid, enableRevisionProperties, force, false).
path - a repository root locationuuid - a repository's uuidenableRevisionProperties - enables or not revision property
modificationsforce - forces operation to run
- a local URL (file:///) of a newly
created repository
createLocalRepository
public static SVNURL createLocalRepository(File path,
String uuid,
boolean enableRevisionProperties,
boolean force,
boolean pre14Compatible)
throws SVNException Creates a local blank FSFS-type repository. This is just similar to
the Subversion's command:
svnadmin create --fs-type=fsfs REPOS_PATH.
The resultant repository is absolutely format-compatible with Subversion.
If
uuid is
null or not 36 chars
wide, the method generates a new UUID for the repository. This UUID would have
the same format as if it's generated by Subversion itself.
If
enableRevisionProperties is
true
then the method creates a
pre-revprop-change executable file inside
the
"hooks" subdir of the repository tree. This executable file
simply returns 0 thus allowing revision property modifications, which are not
permitted, unless one puts such a hook into that very directory.
If
force is
true and
path already
exists, deletes that path and creates a repository in its place.
Set
pre14Compatible to
true if you want a new repository
to be compatible with pre-1.4 servers.
path - a repository root locationuuid - a repository's uuidenableRevisionProperties - enables or not revision property
modificationsforce - forces operation to runpre14Compatible - true to
create a repository with pre-1.4 format
- a local URL (file:///) of a newly
created repository
createLocalRepository
public static SVNURL createLocalRepository(File path,
boolean enableRevisionProperties,
boolean force)
throws SVNException Creates a local blank FSFS-type repository.
A call to this routine is equivalent to
createLocalRepository(path, null, enableRevisionProperties, force).
path - a repository root locationenableRevisionProperties - enables or not revision property
modificationsforce - forces operation to run
- a local URL (file:///) of a newly
created repository
hasRepositoryFactory
protected static boolean hasRepositoryFactory(String protocol)
registerRepositoryFactory
protected static void registerRepositoryFactory(String protocol,
SVNRepositoryFactory factory)
Copyright © 2004-2006 TMate Software Ltd. All Rights Reserved.