| SVNKit Home | |
| Prev Class | Next Class | Frames | No Frames |
| Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Objectorg.tmatesoft.svn.core.io.SVNRepositorypublic abstract class SVNRepositoryextends Objecthttp:// or
https://), or a custom svn one (svn:// or svn+ssh://)
or immediately on the local machine (file:///) a user must initialize the library
in a proper way:
//import neccessary classes import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory; import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; import import org.tmatesoft.svn.core.wc.SVNWCUtil; import import org.tmatesoft.svn.core.SVNException; ... //Set up connection protocols support: //http:// and https:// DAVRepositoryFactory.setup(); //svn://, svn+xxx:// (svn+ssh:// in particular) SVNRepositoryFactoryImpl.setup(); //file:/// FSRepositoryFactory.setup();
svn+xxx:// can be any tunnel scheme for tunneled working with a
repository. xxx URL scheme is looked up in the section tunnels of the
standard Subversion config file.
So, only after these setup steps the client can create http | svn | file protocol
implementations of the SVNRepository abstract class to access
the repository.
This is a general way how a user creates an SVNRepository driver object:
String url="http://svn.collab.net/svn/trunk"; String name="my name"; String password="my password"; repository = null; try { repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url)); ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, password); repository.setAuthenticationManager(authManager); ... } catch (SVNException e){ e.printStackTrace(); System.exit(1); } //work with the repository ...SVNRepository objects are not thread-safe, we're strongly recommend you not to use one SVNRepository object from within multiple threads. Also methods of SVNRepository objects are not reenterable - that is, you can not call operation methods of an SVNRepository driver neither from within those handlers that are passed to some of the driver's methods, nor during committing with the help of a commit editor (until the editor's
closeEdit()
method is called).
To authenticate a user over network SVNRepository drivers use
ISVNAuthenticationManager auth drivers.
Constructor Summary | |
| |
Method Summary | |
protected static void |
|
abstract SVNNodeKind |
|
void |
|
abstract void |
|
abstract void |
|
abstract void |
|
abstract void |
|
ISVNAuthenticationManager |
|
abstract ISVNEditor |
|
ISVNEditor |
|
abstract long |
|
org.tmatesoft.svn.util.ISVNDebugLog |
|
Collection |
|
abstract long |
|
abstract SVNDirEntry |
|
abstract long |
|
Collection |
|
abstract int |
|
String |
|
abstract long |
|
SVNURL |
|
Collection |
|
Map |
|
abstract int |
|
abstract SVNLock |
|
abstract SVNLock[] |
|
ISVNSession |
|
String |
|
SVNURL |
|
SVNURL |
|
String |
|
String |
|
protected static Long |
|
abstract Map |
|
abstract String |
|
ISVNTunnelProvider |
|
abstract SVNDirEntry |
|
protected static boolean |
|
protected static boolean |
|
protected void |
|
abstract void |
|
Collection |
|
abstract long |
|
long |
|
abstract void |
|
void |
|
void |
|
void |
|
protected void |
|
abstract void |
|
void |
|
abstract void |
|
abstract void |
|
protected void |
|
abstract void |
|
abstract void |
|
abstract void |
|
public abstract SVNNodeKind checkPath(String path, long revision) throws SVNException
Returns the kind of an item located at the specified path in a particular revision. If thepathdoes not exist under the specifiedrevision,SVNNodeKind.NONEwill be returned. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/").
- Parameters:
path- an item's pathrevision- a revision number
- Returns:
- the node kind for the given
pathat the givenrevision
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
public void checkout(long revision,
String target,
boolean recursive,
ISVNEditor editor)
throws SVNExceptionChecks out a directory from a repository .targetis the name (one-level path component) of an entry that will restrict the scope of the checkout to this entry. In other wordstargetis a child entry of the directory represented by the repository location to which this object is set. For example, if we have something like"/dirA/dirB"in a repository, then this object's repository location may be set to"svn://host:port/path/to/repos/dirA", andtargetmay be"dirB". Iftargetis null or empty ("") then the scope of the checkout operation is the repository location to which this object is set. The providededitoris used to carry out all the work on building a local tree of dirs and files being checked out. NOTE: you may not invoke methods of this SVNRepository object from within the providededitor.
- Parameters:
revision- a desired revision of a dir to check out; defaults to the latest revision (HEAD)target- an entry name (optional)recursive- if true and the checkout scope is a directory, descends recursively, otherwise noteditor- a caller's checkout editor
- Throws:
SVNException- in the following cases:
- the checkout scope is not a directory (only dirs can be checked out)
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public abstract void closeSession()
throws SVNExceptionCloses the current session closing a socket connection used by this object. If this driver object keeps a single connection for all the data i/o, this method helps to reset the connection.
- Throws:
SVNException- if some i/o error has occurred
public abstract void diff(SVNURL url, long revision, String target, boolean ignoreAncestry, boolean recursive, ISVNReporterBaton reporter, ISVNEditor editor) throws SVNException
Deprecated. use
diff(SVNURL,long,long,String,boolean,boolean,ISVNReporterBaton,ISVNEditor)insteadCalculates the differences between two items.targetis the name (one-level path component) of an entry that will restrict the scope of the diff operation to this entry. In other wordstargetis a child entry of the directory represented by the repository location to which this object is set. For example, if we have something like"/dirA/dirB"in a repository, then this object's repository location may be set to"svn://host:port/path/to/repos/dirA", andtargetmay be"dirB". Iftargetis null or empty ("") then the scope of the diff operation is the repository location to which this object is set. Thereporteris used to describe the state of the target item(s) (i.e. items' revision numbers). All the paths described by thereportershould be relative to the repository location to which this object is set. After that theeditoris used to carry out all the work on evaluating differences againsturl. Thiseditorcontains knowledge of where the change will begin (whenISVNEditor.openRoot()is called). IfignoreAncestryis false then the ancestry of the paths being diffed is taken into consideration - they are treated as related. In this case, for example, if calculating differences between two files with identical contents but different ancestry, the entire contents of the target file is considered as having been removed and added again. IfignoreAncestryis true then the two paths are merely compared ignoring the ancestry. NOTE: you may not invoke methods of this SVNRepository object from within the providedreporterandeditor.
- Parameters:
url- a repository location of the entry against which differences are calculatedrevision- a revision number of the repository location to which this driver object is settarget- a target entry name (optional)ignoreAncestry- if true then the ancestry of the two entries to be diffed is ignored, otherwise notrecursive- if true and the diff scope is a directory, descends recursively, otherwise notreporter- a caller's reportereditor- a caller's editor
- Throws:
SVNException- in the following cases:
urlnot found neither in the specifiedrevisionnor in the HEAD revision- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- See Also:
ISVNReporterBaton,ISVNReporter,ISVNEditor
public abstract void diff(SVNURL url, long targetRevision, long revision, String target, boolean ignoreAncestry, boolean recursive, boolean getContents, ISVNReporterBaton reporter, ISVNEditor editor) throws SVNException
Calculates the differences between two items.targetis the name (one-level path component) of an entry that will restrict the scope of the diff operation to this entry. In other wordstargetis a child entry of the directory represented by the repository location to which this object is set. For example, if we have something like"/dirA/dirB"in a repository, then this object's repository location may be set to"svn://host:port/path/to/repos/dirA", andtargetmay be"dirB". Iftargetis null or empty ("") then the scope of the diff operation is the repository location to which this object is set. Thereporteris used to describe the state of the target item(s) (i.e. items' revision numbers). All the paths described by thereportershould be relative to the repository location to which this object is set. After that theeditoris used to carry out all the work on evaluating differences againsturl. Thiseditorcontains knowledge of where the change will begin (whenISVNEditor.openRoot()is called). IfignoreAncestryis false then the ancestry of the paths being diffed is taken into consideration - they are treated as related. In this case, for example, if calculating differences between two files with identical contents but different ancestry, the entire contents of the target file is considered as having been removed and added again. IfignoreAncestryis true then the two paths are merely compared ignoring the ancestry. NOTE: you may not invoke methods of this SVNRepository object from within the providedreporterandeditor.
- Parameters:
url- a repository location of the entry against which differences are calculatedtargetRevision- a revision number of the entry located at the specifiedurl; defaults to the latest revision (HEAD) if this arg is invalidrevision- a revision number of the repository location to which this driver object is settarget- a target entry name (optional)ignoreAncestry- if true then the ancestry of the two entries to be diffed is ignored, otherwise notrecursive- if true and the diff scope is a directory, descends recursively, otherwise notgetContents- if false contents (diff windows) will not be sent ot the editor.reporter- a caller's reportereditor- a caller's editor
- Throws:
SVNException- in the following cases:
urlnot found neither in the specifiedrevisionnor in the HEAD revision- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- See Also:
ISVNReporterBaton,ISVNReporter,ISVNEditor
public abstract void diff(SVNURL url, long targetRevision, long revision, String target, boolean ignoreAncestry, boolean recursive, ISVNReporterBaton reporter, ISVNEditor editor) throws SVNException
Deprecated.
public ISVNAuthenticationManager getAuthenticationManager()
Returns the authentication driver registered for this object.
- Returns:
- an authentication driver that is used by this object to authenticate a user over network
public abstract ISVNEditor getCommitEditor(String logMessage, Map locks, boolean keepLocks, ISVNWorkspaceMediator mediator) throws SVNException
Gets an editor for committing changes to a repository. Having got the editor traverse a local tree of dirs and/or files to be committed, handling them with corresponding methods of the editor.locksis a map used to provide lock tokens on the locked paths. Keys are locked paths in a local tree, and each value for a key is a lock token.locksmust live during the whole commit operation. IfkeepLocksis true, then the locked paths won't be unlocked after a successful commit. Otherwise, if false, locks will be automatically released.mediatoris used for temporary delta data storage allocations. The root path of the commit is the current repository location to which this object is set. After the commit has succeededISVNEditor.closeEdit()returns an SVNCommitInfo object that contains a new revision number, the commit date, commit author. NOTE: you may not invoke methods of this SVNRepository object from within the returned commit editor.
- Parameters:
logMessage- a commit log messagelocks- a map containing locked paths mapped to lock tokenskeepLocks- true to keep existing locks; false to release locks after the commitmediator- temp delta storage provider; used also to cache wcprops while committing
- Returns:
- an editor to commit a local tree of dirs and/or files
- Throws:
SVNException- in the following cases:
- the repository location this object is set to is not a directory
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public ISVNEditor getCommitEditor(String logMessage, ISVNWorkspaceMediator mediator) throws SVNException
Gets an editor for committing changes to a repository. Having got the editor traverse a local tree of dirs and/or files to be committed, handling them with corresponding methods of the editor.mediatoris used for temporary delta data storage allocations. The root path of the commit is the current repository location to which this object is set. After the commit has succeededISVNEditor.closeEdit()returns an SVNCommitInfo object that contains a new revision number, the commit date, commit author. This method should be rather used with pre-1.2 repositories. NOTE: you may not invoke methods of this SVNRepository object from within the returned commit editor.
- Parameters:
logMessage- a commit log messagemediator- temp delta storage provider; used also to cache wcprops while committing
- Returns:
- an editor to commit a local tree of dirs and/or files
- Throws:
SVNException- in the following cases:
- the repository location this object is set to is not a directory
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public abstract long getDatedRevision(Date date)
throws SVNExceptionReturns the recent repository revision number for the particular moment in time - the closest one before or at the specified datestamp. Example: if you specify a single date without specifying a time of the day (e.g. 2002-11-27) the timestamp is assumed to 00:00:00 and the method won't return any revisions for the day you have specified but for the day just before it.
- Parameters:
date- a datestamp for defining the needed moment in time
- Returns:
- the revision of the repository for that time
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
public org.tmatesoft.svn.util.ISVNDebugLog getDebugLog()
Returns the debug logger currently in use. If no debug logger has been specified by the time this call occurs, a default one (returned byorg.tmatesoft.svn.util.SVNDebugLog.getDefaultLog()) will be created and used.
- Returns:
- a debug logger
public Collection getDir(String path,
long revision,
Map properties,
Collection dirEntries)
throws SVNExceptionFetches the contents and properties of a directory located at the specified path in a particular revision. Information of each directory entry is represented by a single SVNDirEntry object. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/").
- Parameters:
path- a directory pathrevision- a revision numberproperties- if not null then all directory properties (including non-tweakable ones) will be put into this map (where keys are property names and mappings are property values)dirEntries- if not null then this collection receives fetched dir entries (SVNDirEntry objects)
- Returns:
- a collection containing fetched directory entries (SVNDirEntry objects)
- Throws:
SVNException- in the following cases:
pathnot found in the specifiedrevisionpathis not a directory- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public abstract long getDir(String path,
long revision,
Map properties,
ISVNDirEntryHandler handler)
throws SVNExceptionFetches the contents and/or properties of a directory located at the specified path in a particular revision. Ifhandlerarg is not null it will be dispatched information of each directory entry represented by an SVNDirEntry object. Ifpropertiesarg is not null it will receive the properties of the file. This includes all properties: not just ones controlled by a user and stored in the repository filesystem, but also non-tweakable ones (e.g. 'wcprops', 'entryprops', etc.). Property names (keys) are mapped to property values. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/"). Ifrevisionis invalid (negative), HEAD revision will be used. NOTE: you may not invoke operation methods of this SVNRepository object from within the providedhandler.
- Parameters:
path- a directory pathrevision- a directory revisionproperties- a directory properties receiver maphandler- a handler to process directory entries
- Returns:
- the revision of the directory
- Throws:
SVNException- in the following cases:
pathnot found in the specifiedrevisionpathis not a directory- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public abstract SVNDirEntry getDir(String path, long revision, boolean includeCommitMessages, Collection entries) throws SVNException
Fetches the contents of a directory into the provided collection object and returns the directory entry itself. Ifentriesarg is not null it receives the directory entries. Information of each directory entry is represented by an SVNDirEntry object. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/").
- Parameters:
path- a directory pathrevision- a revision numberincludeCommitMessages- if true then dir entries (SVNDirEntry objects) will be supplied with commit log messages, otherwise notentries- a collection that receives fetched dir entries
- Returns:
- the directory entry itself which contents are fetched into
entries
- Throws:
SVNException- in the following cases:
pathnot found in the specifiedrevisionpathis not a directory- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public abstract long getFile(String path,
long revision,
Map properties,
OutputStream contents)
throws SVNExceptionFetches the contents and/or properties of a file located at the specified path in a particular revision. Ifcontentsarg is not null it will be written with file contents. Ifpropertiesarg is not null it will receive the properties of the file. This includes all properties: not just ones controlled by a user and stored in the repository filesystem, but also non-tweakable ones (e.g. 'wcprops', 'entryprops', etc.). Property names (keys) are mapped to property values. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/"). Ifrevisionis invalid (negative), HEAD revision will be used.
- Parameters:
path- a file pathrevision- a file revisionproperties- a file properties receiver mapcontents- an output stream to write the file contents to
- Returns:
- the revision the file has been taken at
- Throws:
SVNException- in the following cases:
- there's no such
pathinrevision- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public Collection getFileRevisions(String path,
Collection revisions,
long sRevision,
long eRevision)
throws SVNExceptionRetrieves and returns interesting file revisions for the specified file. A file revision is represented by an SVNFileRevision object. Only those revisions will be retrieved in which the file was changed. The iteration will begin at the first such revision starting from thestartRevisionand so on - up to theendRevision. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/"). NOTE: this functionality is not available in pre-1.1 servers
- Parameters:
path- a file pathrevisions- if not null this collection will receive all the fetched file revisionssRevision- a revision to start fromeRevision- a revision to stop at
- Returns:
- a collection that keeps file revisions -
SVNFileRevisioninstances
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
- Since:
- SVN 1.1
public abstract int getFileRevisions(String path,
long startRevision,
long endRevision,
ISVNFileRevisionHandler handler)
throws SVNExceptionRetrieves interesting file revisions for the specified file. A file revision is represented by an SVNFileRevision object. Each file revision is handled by the file revision handler provided. Only those revisions will be retrieved in which the file was changed. The iteration will begin at the first such revision starting from thestartRevisionand so on - up to theendRevision. If the method succeeds, the providedhandlerwill have been invoked at least once. For the first interesting revision the file contents will be provided to thehandleras a text delta against an empty file. For the following revisions, the delta will be against the fulltext contents of the previous revision. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/"). NOTES:
- you may not invoke methods of this SVNRepository object from within the provided
handler- this functionality is not available in pre-1.1 servers
- Parameters:
path- a file pathstartRevision- a revision to start fromendRevision- a revision to stop athandler- a handler that processes file revisions passed
- Returns:
- the number of retrieved file revisions
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
- Since:
- SVN 1.1
public String getFullPath(String relativeOrRepositoryPath)
throws SVNExceptionResolves a path, relative either to the location to which this driver object is set or to the repository root directory, to a path, relative to the host.
- Parameters:
relativeOrRepositoryPath- a relative path within the repository
- Returns:
- a path relative to the host
- Throws:
SVNException-
public abstract long getLatestRevision()
throws SVNExceptionReturns the number of the latest revision of the repository this driver is working with.
- Returns:
- the latest revision number
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
public SVNURL getLocation()
Returns the repository location to which this object is set. It may be the location that was used to create this object (seeSVNRepositoryFactory.create(SVNURL)), or the recent one the object was set to.
- Returns:
- a repository location set for this driver
- See Also:
setLocation(SVNURL,boolean)
public Collection getLocations(String path,
Collection entries,
long pegRevision,
long[] revisions)
throws SVNExceptionGets entry locations in time. The location of an entry in a repository may change from revision to revision. This method allows to trace entry locations in different revisions. For each interesting revision (taken fromrevisions) an entry location is represented by an SVNLocationEntry object. Each SVNLocationEntry object represents a repository path in a definite revision. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/"). NOTE: this functionality is not available in pre-1.1 servers
- Parameters:
path- an item's pathentries- if not null then this collection object receives entry locationspegRevision- a revision in whichpathis first looked uprevisions- an array of numbers of interesting revisions in which locations are looked up. Ifpathdoesn't exist in an interesting revision, that revision will be ignored.
- Returns:
- a collection with retrieved entry locations
- Throws:
SVNException- in the following cases:
pathnot found in the specifiedpegRevisionpegRevisionis not valid- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- Since:
- SVN 1.1
public Map getLocations(String path,
Map entries,
long pegRevision,
long[] revisions)
throws SVNExceptionGets entry locations in time. The location of an entry in a repository may change from revision to revision. This method allows to trace entry locations in different revisions. For each interesting revision (taken fromrevisions) an entry location is represented by an SVNLocationEntry object. Each SVNLocationEntry object represents a repository path in a definite revision. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/"). NOTE: this functionality is not available in pre-1.1 servers
- Parameters:
path- an item's pathentries- if not null then this map object receives entry locations (which keys are revision numbers as Longs and mappings are entry locations objects)pegRevision- a revision in whichpathis first looked uprevisions- an array of numbers of interesting revisions in which locations are looked up. Ifpathdoesn't exist in an interesting revision, that revision will be ignored.
- Returns:
- a map (which keys are revision numbers as Longs and mappings are entry locations objects) with collected entry locations
- Throws:
SVNException- in the following cases:
pathnot found in the specifiedpegRevisionpegRevisionis not valid- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- Since:
- SVN 1.1
public abstract int getLocations(String path,
long pegRevision,
long[] revisions,
ISVNLocationEntryHandler handler)
throws SVNExceptionGets entry locations in time. The location of an entry in a repository may change from revision to revision. This method allows to trace entry locations in different revisions. For each interesting revision (taken fromrevisions) an entry location is represented by an SVNLocationEntry object which is passed to the providedhandler. Each SVNLocationEntry object represents a repository path in a definite revision. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/"). NOTES:
- you may not invoke methods of this SVNRepository object from within the provided
handler- this functionality is not available in pre-1.1 servers
- Parameters:
path- an item's pathpegRevision- a revision in whichpathis first looked uprevisions- an array of numbers of interesting revisions in which locations are looked up. Ifpathdoesn't exist in an interesting revision, that revision will be ignored.handler- a location entry handler that will handle all found entry locations
- Returns:
- the number of the entry locations found
- Throws:
SVNException- in the following cases:
pathnot found in the specifiedpegRevisionpegRevisionis not valid- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- Since:
- SVN 1.1
public abstract SVNLock getLock(String path) throws SVNException
Gets the lock for the file located at the specified path. If the file has no lock the method returns null. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/").
- Parameters:
path- a file path
- Returns:
- an SVNLock instance (representing the lock) or null if there's no lock
- Throws:
SVNException- in the following cases:
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- Since:
- SVN 1.2
public abstract SVNLock[] getLocks(String path) throws SVNException
Gets all locks on or below thepath, that is if the repository entry (located at thepath) is a directory then the method returns locks of all locked files (if any) in it. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/").
- Parameters:
path- a path under which locks are to be retrieved
- Returns:
- an array of SVNLock objects (representing locks)
- Throws:
SVNException- in the following cases:
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- Since:
- SVN 1.2
public ISVNSession getOptions()
Returns the session options object this driver is using. If no options object was provided to create this driver then it uses a default one -ISVNSession.DEFAULT.
- Returns:
- a session options object
public String getRepositoryPath(String relativePath)
throws SVNExceptionReturns a path relative to the repository root directory given a path relative to the location to which this driver object is set.
- Parameters:
relativePath- a path relative to the location to which this SVNRepository is set
- Returns:
- a path relative to the repository root
- Throws:
SVNException-
public SVNURL getRepositoryRoot()
Deprecated. use #getRepositoryRoot(boolean) instead
- Returns:
- the repository root directory location url
- See Also:
getRepositoryRoot(boolean)
public SVNURL getRepositoryRoot(boolean forceConnection) throws SVNException
Gets a repository's root directory location. If this driver object is switched to a different repository location during runtime (probably to an absolutely different repository, seesetLocation()), the root directory location may be changed.
- Parameters:
forceConnection- if true then forces this driver to test a connection - try to access a repository
- Returns:
- the repository root directory location url
- Throws:
SVNException-
- See Also:
testConnection()
public String getRepositoryUUID()
Deprecated. use
getRepositoryUUID(boolean)instead
- Returns:
- the UUID of a repository
public String getRepositoryUUID(boolean forceConnection)
throws SVNExceptionGets the Universal Unique IDentifier (UUID) of the repository this driver is created for.
- Parameters:
forceConnection- if true then forces this driver to test a connection - try to access a repository
- Returns:
- the UUID of a repository
- Throws:
SVNException-
protected static Long getRevisionObject(long revision)
public abstract Map getRevisionProperties(long revision,
Map properties)
throws SVNExceptionReturns unversioned revision properties for a particular revision. Property names (keys) are mapped to their values. You may use SVNRevisionProperty constants to retrieve property values from the map.
- Parameters:
revision- a revision numberproperties- if not null then properties will be placed in this map, otherwise a new map will be created
- Returns:
- a map containing unversioned revision properties
- Throws:
SVNException- in the following cases:
revisionnumber is invalid- there's no such
revisionat all- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- See Also:
SVNRevisionProperty
public abstract String getRevisionPropertyValue(long revision,
String propertyName)
throws SVNExceptionGets the value of an unversioned property.
- Parameters:
revision- a revision numberpropertyName- a property name
- Returns:
- a revision property value or null if there's no such revision property
- Throws:
SVNException- in the following cases:
revisionnumber is invalid or if there's no suchrevisionat all.- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public ISVNTunnelProvider getTunnelProvider()
Returns a tunnel provider.
- Returns:
- a tunnel provider
public abstract SVNDirEntry info(String path, long revision) throws SVNException
Gives information about an entry located at the specified path in a particular revision. Thepatharg can be both relative to the location of this driver and absolute to the repository root (starts with"/").
- Parameters:
path- an item's pathrevision- a revision of the entry; defaults to the latest revision (HEAD)
- Returns:
- an SVNDirEntry containing information about the entry or null if there's no entry with at the specified
pathunder the specifiedrevision
- Throws:
SVNException- in the following cases:
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
protected static boolean isInvalidRevision(long revision)
protected static boolean isValidRevision(long revision)
protected void lock()
public abstract void lock(Map pathsToRevisions,
String comment,
boolean force,
ISVNLockHandler handler)
throws SVNExceptionLocks path(s) at definite revision(s). Note that locking is never anonymous, so any server implementing this function will have to "pull" a username from the client, if it hasn't done so already. Each path to be locked is handled with the providedhandler. If a path was successfully locked, thehandler'shandleLock()is called that receives the path and either a lock object (representing the lock that was set on the path) or an error exception, if locking failed for that path. If any path is already locked by a different user and theforceflag is false, then this call fails with throwing an SVNException. But ifforceis true, then the existing lock(s) will be "stolen" anyway, even if the user name does not match the current lock's owner. Paths can be both relative to the location of this driver and absolute to the repository root (starting with"/").
- Parameters:
pathsToRevisions- a map which keys are paths and values are revision numbers (as Longs); paths are strings and revision numbers are Long objectscomment- a comment string for the lock (optional)force- true if the file is to be locked in any way (even if it's already locked by someone else)handler- if not null, the lock handler is invoked on each path to be locked
- Throws:
SVNException- in the following cases:
forceis false and a path is already locked by someone else- a revision of a path is less than its last changed revision
- a path does not exist in the latest revision
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- Since:
- SVN 1.2
public Collection log(String[] targetPaths,
Collection entries,
long startRevision,
long endRevision,
boolean changedPath,
boolean strictNode)
throws SVNExceptionTraverses revisions history and returns a collection of log entries. In other words, collects per revision information that includes the revision number, author, datestamp, log message and maybe a list of changed paths (optional). For each revision this information is represented by an SVNLogEntry. object.startRevisionmay be greater or less thanendRevision; this just controls whether the log messages are processed in descending or ascending revision number order. IfstartRevisionorendRevisionis invalid, it defaults to the youngest. IftargetPathshas one or more elements, then only those revisions are processed in which at least one oftargetPathswas changed (i.e., if a file text or properties changed; if dir properties changed or an entry was added or deleted). Each path is relative to the repository location that this object is set to. IfchangedPathis true, then each SVNLogEntry object is supplied with info about all paths changed in that revision it represents. To get them callSVNLogEntry.getChangedPaths()that returns a map, which keys are the changed paths and the mappings are SVNLogEntryPath objects. IfchangedPathis false, changed paths info will not be provided. IfstrictNodeis true, copy history will not be traversed (if any exists) when harvesting the revision logs for each path. Target paths can be both relative to the location of this driver and absolute to the repository root (starts with"/").
- Parameters:
targetPaths- paths that mean only those revisions at which they were changedentries- if not null then this collection will receive log entriesstartRevision- a revision to start fromendRevision- a revision to end atchangedPath- if true then revision information will also include all changed paths per revision, otherwise notstrictNode- if true then copy history (if any) is not to be traversed
- Returns:
- a collection with log entries
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
public abstract long log(String[] targetPaths,
long startRevision,
long endRevision,
boolean changedPath,
boolean strictNode,
long limit,
ISVNLogEntryHandler handler)
throws SVNExceptionTraverses revisions history. In other words, collects per revision information that includes the revision number, author, datestamp, log message and maybe a list of changed paths (optional). For each revision this information is represented by an SVNLogEntry object. Such objects are passed to the providedhandler. This method invokeshandleron each log entry fromstartRevisiontoendRevision.startRevisionmay be greater or less thanendRevision; this just controls whether the log messages are processed in descending or ascending revision number order. IfstartRevisionorendRevisionis invalid, it defaults to the youngest. IftargetPathshas one or more elements, then only those revisions are processed in which at least one oftargetPathswas changed (i.e., if a file text or properties changed; if dir properties changed or an entry was added or deleted). Each path is relative to the repository location that this object is set to. IfchangedPathis true, then each SVNLogEntry passed to the handler will contain info about all paths changed in that revision it represents. To get them callSVNLogEntry.getChangedPaths()that returns a map, which keys are the changed paths and the values are SVNLogEntryPath objects. IfchangedPathis false, changed paths info will not be provided. IfstrictNodeis true, copy history will not be traversed (if any exists) when harvesting the revision logs for each path. Iflimitis > 0 then only the firstlimitlog entries will be handled. Otherwise (i.e. iflimitis 0) this number is ignored. Target paths can be both relative to the location of this driver and absolute to the repository root (starts with"/"). NOTE: you may not invoke methods of this SVNRepository object from within the providedhandler.
- Parameters:
targetPaths- paths that mean only those revisions at which they were changedstartRevision- a revision to start fromendRevision- a revision to end atchangedPath- if true then revision information will also include all changed paths per revision, otherwise notstrictNode- if true then copy history (if any) is not to be traversedlimit- the maximum number of log entries to processhandler- a caller's handler that will be dispatched log entry objects
- Returns:
- the number of revisions traversed
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
public long log(String[] targetPaths,
long startRevision,
long endRevision,
boolean changedPath,
boolean strictNode,
ISVNLogEntryHandler handler)
throws SVNExceptionTraverses revisions history. In other words, collects per revision information that includes the revision number, author, datestamp, log message and maybe a list of changed paths (optional). For each revision this information is represented by an SVNLogEntry object. Such objects are passed to the providedhandler. This method invokeshandleron each log entry fromstartRevisiontoendRevision.startRevisionmay be greater or less thanendRevision; this just controls whether the log messages are processed in descending or ascending revision number order. IfstartRevisionorendRevisionis invalid, it defaults to the youngest. IftargetPathshas one or more elements, then only those revisions are processed in which at least one oftargetPathswas changed (i.e., if a file text or properties changed; if dir properties changed or an entry was added or deleted). Each path is relative to the repository location that this object is set to. IfchangedPathis true, then each SVNLogEntry passed to the handler will contain info about all paths changed in that revision it represents. To get them callSVNLogEntry.getChangedPaths()that returns a map, which keys are the changed paths and the values are SVNLogEntryPath objects. IfchangedPathis false, changed paths info will not be provided. IfstrictNodeis true, copy history will not be traversed (if any exists) when harvesting the revision logs for each path. Target paths can be both relative to the location of this driver and absolute to the repository root (starts with"/"). NOTE: you may not invoke methods of this SVNRepository object from within the providedhandler.
- Parameters:
targetPaths- paths that mean only those revisions at which they were changedstartRevision- a revision to start fromendRevision- a revision to end atchangedPath- if true then revision information will also include all changed paths per revision, otherwise notstrictNode- if true then copy history (if any) is not to be traversedhandler- a caller's handler that will be dispatched log entry objects
- Returns:
- the number of revisions traversed
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
public abstract void replay(long lowRevision,
long revision,
boolean sendDeltas,
ISVNEditor editor)
throws SVNExceptionReplays the changes from the specified revision through the given editor. Changes will be limited to those that occur under a session's URL, and the server will assume that the client has no knowledge of revisions prior to alowRevision. These two limiting factors define the portion of the tree that the server will assume the client already has knowledge of, and thus any copies of data from outside that part of the tree will be sent in their entirety, not as simple copies or deltas against a previous version. IfsendDeltasis null, the actual text and property changes in the revision will be sent, otherwise no text deltas and null property changes will be sent instead. IflowRevisionis invalid, it defaults to 0.
- Parameters:
lowRevision- a low revision point beyond which a client has no knowledge of paths historyrevision- a revision to replaysendDeltas- controls whether text and property changes are to be senteditor- a commit editor to receive changes
- Throws:
SVNException-
- Since:
- 1.1, new in SVN 1.4
public void setAuthenticationManager(ISVNAuthenticationManager authManager)
Sets an authentication driver for this object. The auth driver may be implemented to retrieve cached credentials, to prompt a user for credentials or something else (actually, this is up to an implementor). Also there's a default implementation - see theSVNWCUtilclass for more details.
- Parameters:
authManager- an authentication driver to provide user credentials
- See Also:
getAuthenticationManager()
public void setDebugLog(org.tmatesoft.svn.util.ISVNDebugLog log)
Sets a logger to write debug log information to.
- Parameters:
log- a debug logger
public void setLocation(SVNURL url, boolean forceReconnect) throws SVNException
Sets a new repository location for this object. The ability to reset an old repository location to a new one (to switch the working location) lets a developer to use the same SVNRepository object instead of creating a new object per each repository location. This advantage gives memory & coding efforts economy. But you can not specify a new repository location url with a protocol different from the one used for the previous (essentially, the current) repository location, since SVNRepository objects are protocol dependent. If a newurlis located within the same repository, this object just switches to thaturlnot closing the current session (i.e. not callingcloseSession()). If either a newurlrefers to the same host (including a port number), or refers to an absolutely different host, or this object has got no repository root location cached (hasn't ever accessed a repository yet), orforceReconnectis true, then the current session is closed, cached repository credentials (UUID and repository root directory location ) are reset and this object is switched to a new repository location.
- Parameters:
url- a new repository location urlforceReconnect- if true then forces to close the current session, resets the cached repository credentials and switches this object to a new location (doesn't matter whether it's on the same host or not)
- Throws:
SVNException- if the old url and a new one has got different protocols
protected void setRepositoryCredentials(String uuid,
SVNURL rootURL)Caches identification parameters (UUID, rood directory location) of the repository with which this driver is working.
- Parameters:
uuid- the repository's Universal Unique IDentifier (UUID)rootURL- the repository's root directory location
public abstract void setRevisionPropertyValue(long revision,
String propertyName,
String propertyValue)
throws SVNExceptionSets a revision property with the specified name to a new value. NOTE: revision properties are not versioned. So, the old values may be lost forever.
- Parameters:
revision- the number of the revision which property is to be changedpropertyName- a revision property namepropertyValue- the value of the revision property
- Throws:
SVNException- in the following cases:
- the repository is configured not to allow clients to modify revision properties (e.g. a pre-revprop-change-hook program is not found or failed)
revisionis invalid or doesn't exist at all- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- See Also:
SVNRevisionProperty
public void setTunnelProvider(ISVNTunnelProvider tunnelProvider)
Sets a tunnel provider. Actually relevant only tosvn+xxx://scheme cases. The provider is responsible for matchingxxxto the tunnel command string. If one would like to have a standard Subversion behaviour (when tunnel commands are fetched from theconfigfile beneath the section namedtunnels), he should provide a default provider (default implementation of theISVNOptionsinterface). Refer toSVNWCUtilclass for more details on how to get a default options driver.
- Parameters:
tunnelProvider- a tunnel provider
- See Also:
getTunnelProvider()
public abstract void status(long revision,
String target,
boolean recursive,
ISVNReporterBaton reporter,
ISVNEditor editor)
throws SVNExceptionGets status of a path.targetis the name (one-level path component) of an entry that will restrict the scope of the status to this entry. In other wordstargetis a child entry of the directory represented by the repository location to which this object is set. For example, if we have something like"/dirA/dirB"in a repository, then this object's repository location may be set to"svn://host:port/path/to/repos/dirA", andtargetmay be"dirB". Iftargetis null or empty ("") then the scope of the update operation is the repository location to which this object is set. Thereporteris used to describe the state of the local item(s) (i.e. items' revision numbers, deleted, switched items). All the paths described by thereportershould be relative to the repository location to which this object is set. After that theeditoris used to carry out all the work on performing status. Thiseditorcontains knowledge of where the change will begin (whenISVNEditor.openRoot()is called). NOTE: you may not invoke methods of this SVNRepository object from within the providedreporterandeditor.
- Parameters:
revision- a desired revision to get status against; defaults to the latest revision (HEAD)target- an entry name (optional)recursive- if true and the status scope is a directory, descends recursively, otherwise notreporter- a client's reporter-batoneditor- a client's status editor
- Throws:
SVNException- in the following cases:
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- See Also:
ISVNReporterBaton,ISVNEditor
public abstract void testConnection()
throws SVNExceptionTries to access a repository. Used to check if there're no problems with accessing a repository and to cache a repository UUID and root directory location.
- Throws:
SVNException- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException)
protected void unlock()
public abstract void unlock(Map pathToTokens,
boolean force,
ISVNLockHandler handler)
throws SVNExceptionRemoves lock(s) from the file(s). Note that unlocking is never anonymous, so any server implementing this function will have to "pull" a username from the client, if it hasn't done so already. Each path to be unlocked is handled with the providedhandler. If a path was successfully unlocked, thehandler'shandleUnlock()is called that receives the path and either a lock object (representing the lock that was removed from the path) or an error exception, if unlocking failed for that path. If the username doesn't match the lock's owner andforceis false, this method call fails with throwing an SVNException. But if theforceflag is true, the lock will be "broken" by the current user. Also if the lock token is incorrect or null andforceis false, the method fails with throwing a SVNException. However, ifforceis true the lock will be removed anyway. Paths can be both relative to the location of this driver and absolute to the repository root (starting with"/").
- Parameters:
pathToTokens- a map which keys are file paths and values are file lock tokens (both keys and values are strings)force- true to remove the lock in any case - i.e. to "break" the lockhandler- if not null, the lock handler is invoked on each path to be unlocked
- Throws:
SVNException- in the following cases:
forceis false and the name of the user who tries to unlock a path does not match the lock owner- a lock token is incorrect for a path
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
- Since:
- SVN 1.2
public abstract void update(long revision,
String target,
boolean recursive,
ISVNReporterBaton reporter,
ISVNEditor editor)
throws SVNExceptionUpdates a path receiving changes from a repository.targetis the name (one-level path component) of an entry that will restrict the scope of the update to this entry. In other wordstargetis a child entry of the directory represented by the repository location to which this object is set. For example, if we have something like"/dirA/dirB"in a repository, then this object's repository location may be set to"svn://host:port/path/to/repos/dirA", andtargetmay be"dirB". Iftargetis null or empty ("") then the scope of the update operation is the repository location to which this object is set. Thereporteris used to describe the state of the local item(s) (i.e. items' revision numbers, deleted, switched items). All the paths described by thereportershould be relative to the repository location to which this object is set. After that theeditoris used to carry out all the work on updating. Thiseditorcontains knowledge of where the change will begin (whenISVNEditor.openRoot()is called). NOTE: you may not invoke methods of this SVNRepository object from within the providedreporterandeditor.
- Parameters:
revision- a desired revision to make update to; defaults to the latest revision (HEAD)target- an entry name (optional)recursive- if true and the update scope is a directory, descends recursively, otherwise notreporter- a caller's reportereditor- a caller's editor
- Throws:
SVNException- in the following cases:
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)
public abstract void update(SVNURL url, long revision, String target, boolean recursive, ISVNReporterBaton reporter, ISVNEditor editor) throws SVNException
Updates a path switching it to a new repository location. Updates a path as it's described for theupdate()method using the providedreporterandeditor, and switching it to a new repository location. NOTE: you may not invoke methods of this SVNRepository object from within the providedreporterandeditor.
- Parameters:
url- a new location in the repository to switch torevision- a desired revision to make update to; defaults to the latest revision (HEAD)target- an entry name (optional)recursive- if true and the switch scope is a directory, descends recursively, otherwise notreporter- a caller's reportereditor- a caller's editor
- Throws:
SVNException- in the following cases:
- a failure occured while connecting to a repository
- the user authentication failed (see
SVNAuthenticationException)