Class FSRepository
- java.lang.Object
-
- org.tmatesoft.svn.core.io.SVNRepository
-
- org.tmatesoft.svn.core.internal.io.fs.FSRepository
-
- All Implemented Interfaces:
ISVNReporter
public class FSRepository extends SVNRepository implements ISVNReporter
- Version:
- 1.3
-
-
Field Summary
Fields Modifier and Type Field Description private FSFS
myFSFS
private boolean
myIsHooksEnabled
private FSLocationsFinder
myLocationsFinder
private FSLog
myLogDriver
private SVNMergeInfoManager
myMergeInfoManager
private FSUpdateContext
myReporterContext
private java.io.File
myReposRootDir
-
Fields inherited from class org.tmatesoft.svn.core.io.SVNRepository
INVALID_REVISION, myLocation, myRepositoryRoot, myRepositoryUUID
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
FSRepository(SVNURL location, ISVNSession options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
abortReport()
Aborts the current running report due to errors occured.FSTranslateReporter
beginReport(long revision, SVNURL url, java.lang.String target, boolean ignoreAncestry, boolean sendTextDeltas, boolean sendCopyFromArgs, SVNDepth depth, ISVNEditor editor)
private SVNDirEntry
buildDirEntry(FSEntry repEntry, SVNURL parentURL, FSRevisionNode entryNode, int entryFields)
SVNNodeKind
checkPath(java.lang.String path, long revision)
Returns the kind of an item located at the specified path in a particular revision.(package private) void
closeRepository()
void
closeSession()
Closes the current session closing a socket connection used by this object.private SVNProperties
collectProperties(FSRevisionNode revNode)
void
deletePath(java.lang.String path)
Describes a working copypath
as deleted or missing.void
diff(SVNURL url, long targetRevision, long revision, java.lang.String target, boolean ignoreAncestry, SVNDepth depth, boolean getContents, ISVNReporterBaton reporter, ISVNEditor editor)
Asks this repository access object to 'diff' a working copy againsttargetRevision
.void
finishReport()
Finalizes the report.ISVNEditor
getCommitEditor(java.lang.String logMessage, java.util.Map locks, boolean keepLocks, ISVNWorkspaceMediator mediator)
Gets an editor for committing changes to a repository.protected ISVNEditor
getCommitEditorInternal(java.util.Map locks, boolean keepLocks, SVNProperties revProps, ISVNWorkspaceMediator mediator)
long
getDatedRevision(java.util.Date date)
Returns the recent repository revision number for the particular moment in time - the closest one before or at the specified datestamp.protected long
getDeletedRevisionImpl(java.lang.String path, long pegRevision, long endRevision)
SVNDirEntry
getDir(java.lang.String path, long revision, boolean includeCommitMessages, java.util.Collection entries)
Fetches the contents of a directory into the provided collection object and returns the directory entry itself.long
getDir(java.lang.String path, long revision, SVNProperties properties, int entryFields, ISVNDirEntryHandler handler)
Fetches the contents and/or properties of a directory located at the specified path in a particular revision with the possibility to specify fields of the entry to fetch.long
getDir(java.lang.String path, long revision, SVNProperties properties, ISVNDirEntryHandler handler)
Fetches the contents and/or properties of a directory located at the specified path in a particular revision.private java.util.Collection
getDirEntries(FSRevisionNode parent, SVNURL parentURL, int entryFields)
long
getFile(java.lang.String path, long revision, SVNProperties properties, java.io.OutputStream contents)
Fetches the contents and/or properties of a file located at the specified path in a particular revision.protected int
getFileRevisionsImpl(java.lang.String path, long startRevision, long endRevision, boolean includeMergedRevisions, ISVNFileRevisionHandler handler)
FSFS
getFSFS()
protected void
getInheritedPropertiesImpl(java.lang.String path, long revision, java.lang.String propertyName, ISVNInheritedPropertiesHandler handler)
long
getLatestRevision()
Returns the number of the latest revision of the repository this driver is working with.protected long
getLocationSegmentsImpl(java.lang.String path, long pegRevision, long startRevision, long endRevision, ISVNLocationSegmentHandler handler)
private FSLocationsFinder
getLocationsFinder()
protected int
getLocationsImpl(java.lang.String path, long pegRevision, long[] revisions, ISVNLocationEntryHandler handler)
SVNLock
getLock(java.lang.String path)
Gets the lock for the file located at the specified path.SVNLock[]
getLocks(java.lang.String path)
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.private FSLog
getLogDriver(java.lang.String[] absPaths, long limit, long histStart, long histEnd, boolean isDescendingOrder, boolean discoverChangedPaths, boolean strictNode, boolean includeMergedRevisions, java.lang.String[] revPropNames, ISVNLogEntryHandler handler)
protected java.util.Map
getMergeInfoImpl(java.lang.String[] paths, long revision, SVNMergeInfoInheritance inherit, boolean includeDescendants)
private SVNMergeInfoManager
getMergeInfoManager()
int
getReposFormat()
java.io.File
getRepositoryRootDir()
SVNProperties
getRevisionProperties(long revision, SVNProperties properties)
Returns unversioned revision properties for a particular revision.SVNPropertyValue
getRevisionPropertyValue(long revision, java.lang.String propertyName)
Gets the value of an unversioned property.private java.lang.String
getUserName()
boolean
hasCapability(SVNCapability capability)
Returnstrue
if the repository has specifiedcapability
.SVNDirEntry
info(java.lang.String path, long revision)
Gives information about an entry located at the specified path in a particular revision.boolean
isHooksEnabled()
static boolean
isInvalidRevision(long revision)
static boolean
isValidRevision(long revision)
void
linkPath(SVNURL url, java.lang.String path, java.lang.String lockToken, long revision, boolean startEmpty)
Describes a local path as being at a particular revision to switch the path to a different repository location.void
linkPath(SVNURL url, java.lang.String path, java.lang.String lockToken, long revision, SVNDepth depth, boolean startEmpty)
Describes a local path as being at a particular revision to switch the path to a different repository location.void
lock(java.util.Map pathsToRevisions, java.lang.String comment, boolean force, boolean isDAVComment, ISVNLockHandler handler)
void
lock(java.util.Map pathsToRevisions, java.lang.String comment, boolean force, ISVNLockHandler handler)
Locks path(s) at definite revision(s).protected long
logImpl(java.lang.String[] targetPaths, long startRevision, long endRevision, boolean discoverChangedPaths, boolean strictNode, long limit, boolean includeMergedRevisions, java.lang.String[] revPropNames, ISVNLogEntryHandler handler)
private void
makeReporterContext(long targetRevision, java.lang.String target, SVNURL switchURL, SVNDepth depth, boolean ignoreAncestry, boolean textDeltas, boolean sendCopyFromArgs, ISVNEditor editor)
private void
openRepository()
private void
openRepositoryRoot()
void
replay(long lowRevision, long highRevision, boolean sendDeltas, ISVNEditor editor)
Replays the changes from the specified revision through the given editor.protected void
replayRangeImpl(long startRevision, long endRevision, long lowRevision, boolean sendDeltas, ISVNReplayHandler handler)
void
setHooksEnabled(boolean enabled)
void
setPath(java.lang.String path, java.lang.String lockToken, long revision, boolean startEmpty)
Describes a local path as being at a particular revision.void
setPath(java.lang.String path, java.lang.String lockToken, long revision, SVNDepth depth, boolean startEmpty)
Describes a working copypath
as being at a particularrevision
and having depthdepth
.void
setRevisionPropertyValue(long revision, java.lang.String propertyName, SVNPropertyValue propertyValue)
Sets a revision property with the specified name to a new value.void
setRevisionPropertyValue(long revision, java.lang.String propertyName, SVNPropertyValue propertyValue, boolean bypassHooks)
void
setRevisionPropertyValue(long revision, java.lang.String propertyName, SVNPropertyValue propertyValue, boolean bypassPreRevpropHook, boolean bypassPostRevpropHook)
void
status(long revision, java.lang.String target, SVNDepth depth, ISVNReporterBaton reporter, ISVNEditor editor)
Gets status of a path to the particulardepth
as a scope.void
testConnection()
Tries to access a repository.void
unlock(java.util.Map pathToTokens, boolean force, ISVNLockHandler handler)
Removes lock(s) from the file(s).void
update(long revision, java.lang.String target, SVNDepth depth, boolean sendCopyFromArgs, ISVNReporterBaton reporter, ISVNEditor editor)
Updates a path receiving changes from a repository.void
update(SVNURL url, long revision, java.lang.String target, SVNDepth depth, ISVNReporterBaton reporter, ISVNEditor editor)
Asks this repository access object to 'switch' a versioned tree to a newurl
.-
Methods inherited from class org.tmatesoft.svn.core.io.SVNRepository
addConnectionListener, assertServerIsMergeInfoCapable, assertValidRevision, checkout, checkout, checkoutFiles, diff, diff, diff, fireConnectionClosed, fireConnectionOpened, getAuthenticationManager, getCanceller, getCommitEditor, getCommitEditor, getDebugLog, getDeletedRevision, getDir, getDir, getFileRevisions, getFileRevisions, getFileRevisions, getFullPath, getInheritedProperties, getInheritedProperties, getLocation, getLocationRelativePath, getLocations, getLocations, getLocations, getLocationSegments, getLocationSegments, getMergeInfo, getOptions, getRepositoryPath, getRepositoryRoot, getRepositoryRoot, getRepositoryUUID, getRepositoryUUID, getRevisionObject, getTunnelProvider, lock, lock, log, log, log, log, removeConnectionListener, replayRange, setAuthenticationManager, setCanceller, setDebugLog, setLocation, setRepositoryCredentials, setTunnelProvider, status, unlock, update, update
-
-
-
-
Field Detail
-
myReposRootDir
private java.io.File myReposRootDir
-
myReporterContext
private FSUpdateContext myReporterContext
-
myLocationsFinder
private FSLocationsFinder myLocationsFinder
-
myFSFS
private FSFS myFSFS
-
myMergeInfoManager
private SVNMergeInfoManager myMergeInfoManager
-
myLogDriver
private FSLog myLogDriver
-
myIsHooksEnabled
private boolean myIsHooksEnabled
-
-
Constructor Detail
-
FSRepository
protected FSRepository(SVNURL location, ISVNSession options)
-
-
Method Detail
-
setHooksEnabled
public void setHooksEnabled(boolean enabled)
-
isHooksEnabled
public boolean isHooksEnabled()
-
getFSFS
public FSFS getFSFS()
-
testConnection
public void testConnection() throws SVNException
Description copied from class:SVNRepository
Tries 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.- Specified by:
testConnection
in classSVNRepository
- Throws:
SVNException
- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException
)
-
getRepositoryRootDir
public java.io.File getRepositoryRootDir()
-
getReposFormat
public int getReposFormat()
-
getLatestRevision
public long getLatestRevision() throws SVNException
Description copied from class:SVNRepository
Returns the number of the latest revision of the repository this driver is working with.- Specified by:
getLatestRevision
in classSVNRepository
- Returns:
- the latest revision number
- Throws:
SVNException
- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException
)
-
getDatedRevision
public long getDatedRevision(java.util.Date date) throws SVNException
Description copied from class:SVNRepository
Returns 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.
- Specified by:
getDatedRevision
in classSVNRepository
- 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
)
-
getRevisionProperties
public SVNProperties getRevisionProperties(long revision, SVNProperties properties) throws SVNException
Description copied from class:SVNRepository
Returns 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.- Specified by:
getRevisionProperties
in classSVNRepository
- 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:revision
number is invalid- there's no such
revision
at all - a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
- See Also:
SVNRevisionProperty
-
setRevisionPropertyValue
public void setRevisionPropertyValue(long revision, java.lang.String propertyName, SVNPropertyValue propertyValue) throws SVNException
Description copied from class:SVNRepository
Sets 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.
- Specified by:
setRevisionPropertyValue
in classSVNRepository
- 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)
revision
is invalid or doesn't exist at all- a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
- See Also:
SVNRevisionProperty
-
setRevisionPropertyValue
public void setRevisionPropertyValue(long revision, java.lang.String propertyName, SVNPropertyValue propertyValue, boolean bypassHooks) throws SVNException
- Throws:
SVNException
-
setRevisionPropertyValue
public void setRevisionPropertyValue(long revision, java.lang.String propertyName, SVNPropertyValue propertyValue, boolean bypassPreRevpropHook, boolean bypassPostRevpropHook) throws SVNException
- Throws:
SVNException
-
getRevisionPropertyValue
public SVNPropertyValue getRevisionPropertyValue(long revision, java.lang.String propertyName) throws SVNException
Description copied from class:SVNRepository
Gets the value of an unversioned property.- Specified by:
getRevisionPropertyValue
in classSVNRepository
- 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:revision
number is invalid or if there's no suchrevision
at all.- a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
-
checkPath
public SVNNodeKind checkPath(java.lang.String path, long revision) throws SVNException
Description copied from class:SVNRepository
Returns the kind of an item located at the specified path in a particular revision. If thepath
does not exist under the specifiedrevision
,SVNNodeKind.NONE
will be returned.The
path
arg can be both relative to the location of this driver and absolute to the repository root (starts with"/"
).- Specified by:
checkPath
in classSVNRepository
- Parameters:
path
- an item's pathrevision
- a revision number- Returns:
- the node kind for the given
path
at the givenrevision
- Throws:
SVNException
- if a failure occured while connecting to a repository or the user's authentication failed (seeSVNAuthenticationException
)
-
getFile
public long getFile(java.lang.String path, long revision, SVNProperties properties, java.io.OutputStream contents) throws SVNException
Description copied from class:SVNRepository
Fetches the contents and/or properties of a file located at the specified path in a particular revision.If
contents
arg is not null it will be written with file contents.If
properties
arg 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.The
path
arg can be both relative to the location of this driver and absolute to the repository root (starts with"/"
).If
revision
is invalid (negative), HEAD revision will be used.- Specified by:
getFile
in classSVNRepository
- 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
path
inrevision
- a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
- there's no such
-
getDir
public long getDir(java.lang.String path, long revision, SVNProperties properties, ISVNDirEntryHandler handler) throws SVNException
Description copied from class:SVNRepository
Fetches the contents and/or properties of a directory located at the specified path in a particular revision.This method is the same as
SVNRepository.getDir(String, long, SVNProperties, int, ISVNDirEntryHandler)
withentryFields
parameter set toDIRENT_ALL
.- Specified by:
getDir
in classSVNRepository
- 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:path
not found in the specifiedrevision
path
is not a directory- a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
- See Also:
SVNRepository.getDir(String, long, boolean, Collection)
,SVNRepository.getDir(String, long, SVNProperties, int, Collection)
,SVNDirEntry
-
getDir
public SVNDirEntry getDir(java.lang.String path, long revision, boolean includeCommitMessages, java.util.Collection entries) throws SVNException
Description copied from class:SVNRepository
Fetches the contents of a directory into the provided collection object and returns the directory entry itself.If
entries
arg is not null it receives the directory entries. Information of each directory entry is represented by an SVNDirEntry object.The
path
arg can be both relative to the location of this driver and absolute to the repository root (starts with"/"
).- Specified by:
getDir
in classSVNRepository
- 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:path
not found in the specifiedrevision
path
is not a directory- a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
- See Also:
SVNRepository.getDir(String, long, SVNProperties, ISVNDirEntryHandler)
,SVNRepository.getDir(String, long, SVNProperties, Collection)
,SVNDirEntry
-
getDir
public long getDir(java.lang.String path, long revision, SVNProperties properties, int entryFields, ISVNDirEntryHandler handler) throws SVNException
Description copied from class:SVNRepository
Fetches the contents and/or properties of a directory located at the specified path in a particular revision with the possibility to specify fields of the entry to fetch.If
handler
arg is not null it will be dispatched information of each directory entry represented by an SVNDirEntry object.If
properties
arg 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.The
path
arg can be both relative to the location of this driver and absolute to the repository root (starts with"/"
).If
revision
is invalid (negative), HEAD revision will be used. NOTE: you may not invoke operation methods of this SVNRepository object from within the providedhandler
.- Specified by:
getDir
in classSVNRepository
- Parameters:
path
- a directory pathrevision
- a directory revisionproperties
- a directory properties receiver mapentryFields
- a combination of fields for the entryhandler
- a handler to process directory entries- Returns:
- the revision of the directory
- Throws:
SVNException
- in the following cases:path
not found in the specifiedrevision
path
is not a directory- a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
- See Also:
SVNRepository.getDir(String, long, boolean, Collection)
,SVNRepository.getDir(String, long, SVNProperties, int, Collection)
,SVNDirEntry
-
getFileRevisionsImpl
protected int getFileRevisionsImpl(java.lang.String path, long startRevision, long endRevision, boolean includeMergedRevisions, ISVNFileRevisionHandler handler) throws SVNException
- Specified by:
getFileRevisionsImpl
in classSVNRepository
- Throws:
SVNException
-
logImpl
protected long logImpl(java.lang.String[] targetPaths, long startRevision, long endRevision, boolean discoverChangedPaths, boolean strictNode, long limit, boolean includeMergedRevisions, java.lang.String[] revPropNames, ISVNLogEntryHandler handler) throws SVNException
- Specified by:
logImpl
in classSVNRepository
- Throws:
SVNException
-
getLocationsImpl
protected int getLocationsImpl(java.lang.String path, long pegRevision, long[] revisions, ISVNLocationEntryHandler handler) throws SVNException
- Specified by:
getLocationsImpl
in classSVNRepository
- Throws:
SVNException
-
getLocationSegmentsImpl
protected long getLocationSegmentsImpl(java.lang.String path, long pegRevision, long startRevision, long endRevision, ISVNLocationSegmentHandler handler) throws SVNException
- Specified by:
getLocationSegmentsImpl
in classSVNRepository
- Throws:
SVNException
-
replay
public void replay(long lowRevision, long highRevision, boolean sendDeltas, ISVNEditor editor) throws SVNException
Description copied from class:SVNRepository
Replays 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 a
lowRevision
. 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.If
sendDeltas
is true, the actual text and property changes in the revision will be sent, otherwise no text deltas and null property changes will be sent instead.If
lowRevision
is invalid, it defaults to 0.- Specified by:
replay
in classSVNRepository
- Parameters:
lowRevision
- a low revision point beyond which a client has no knowledge of paths historyhighRevision
- a revision to replaysendDeltas
- controls whether text and property changes are to be senteditor
- a commit editor to receive changes- Throws:
SVNException
- in case the repository could not be connectedSVNAuthenticationException
- in case of authentication problems
-
info
public SVNDirEntry info(java.lang.String path, long revision) throws SVNException
Description copied from class:SVNRepository
Gives information about an entry located at the specified path in a particular revision.The
path
arg can be both relative to the location of this driver and absolute to the repository root (starts with"/"
).- Specified by:
info
in classSVNRepository
- 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
path
under the specifiedrevision
- Throws:
SVNException
- in the following cases:- a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
-
getCommitEditor
public ISVNEditor getCommitEditor(java.lang.String logMessage, java.util.Map locks, boolean keepLocks, ISVNWorkspaceMediator mediator) throws SVNException
Description copied from class:SVNRepository
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.locks
is 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.locks
must live during the whole commit operation.If
keepLocks
is true, then the locked paths won't be unlocked after a successful commit. Otherwise, if false, locks will be automatically released.mediator
is 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 succeeded
ISVNEditor.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.
- Specified by:
getCommitEditor
in classSVNRepository
- 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
)
- See Also:
SVNRepository.getCommitEditor(String, ISVNWorkspaceMediator)
, Using ISVNEditor in commit operations
-
getLock
public SVNLock getLock(java.lang.String path) throws SVNException
Description copied from class:SVNRepository
Gets the lock for the file located at the specified path. If the file has no lock the method returns null.The
path
arg can be both relative to the location of this driver and absolute to the repository root (starts with"/"
).- Specified by:
getLock
in classSVNRepository
- 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
)
- See Also:
SVNRepository.lock(Map, String, boolean, ISVNLockHandler)
,SVNRepository.unlock(Map, boolean, ISVNLockHandler)
,SVNRepository.getLocks(String)
,SVNLock
-
getLocks
public SVNLock[] getLocks(java.lang.String path) throws SVNException
Description copied from class:SVNRepository
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.The
path
arg can be both relative to the location of this driver and absolute to the repository root (starts with"/"
).- Specified by:
getLocks
in classSVNRepository
- 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
)
- See Also:
SVNRepository.lock(Map, String, boolean, ISVNLockHandler)
,SVNRepository.unlock(Map, boolean, ISVNLockHandler)
,SVNRepository.getLock(String)
,SVNLock
-
lock
public void lock(java.util.Map pathsToRevisions, java.lang.String comment, boolean force, ISVNLockHandler handler) throws SVNException
Description copied from class:SVNRepository
Locks 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 provided
handler
. 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 the
force
flag is false, then this call fails with throwing an SVNException. But ifforce
is 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
"/"
).- Specified by:
lock
in classSVNRepository
- 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:force
is 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
)
- See Also:
SVNRepository.unlock(Map, boolean, ISVNLockHandler)
,SVNRepository.getLocks(String)
,SVNRepository.getLock(String)
,SVNLock
-
lock
public void lock(java.util.Map pathsToRevisions, java.lang.String comment, boolean force, boolean isDAVComment, ISVNLockHandler handler) throws SVNException
- Throws:
SVNException
-
unlock
public void unlock(java.util.Map pathToTokens, boolean force, ISVNLockHandler handler) throws SVNException
Description copied from class:SVNRepository
Removes 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 provided
handler
. 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 and
force
is false, this method call fails with throwing an SVNException. But if theforce
flag is true, the lock will be "broken" by the current user.Also if the lock token is incorrect or null and
force
is false, the method fails with throwing a SVNException. However, ifforce
is 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
"/"
).- Specified by:
unlock
in classSVNRepository
- 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:force
is 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 occurred while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
- See Also:
SVNRepository.lock(Map, String, boolean, ISVNLockHandler)
,SVNRepository.getLocks(String)
,SVNRepository.getLock(String)
,SVNLock
-
finishReport
public void finishReport() throws SVNException
Description copied from interface:ISVNReporter
Finalizes the report. Must be called when having traversed a local tree of paths.Any directories or files not explicitly set (described) are assumed to be at the baseline revision.
- Specified by:
finishReport
in interfaceISVNReporter
- Throws:
SVNException
- in case the repository could not be connected
-
abortReport
public void abortReport() throws SVNException
Description copied from interface:ISVNReporter
Aborts the current running report due to errors occured.If an error occurs during a report, call this method to abort the reporter correctly.
- Specified by:
abortReport
in interfaceISVNReporter
- Throws:
SVNException
- in case the repository could not be connected
-
closeSession
public void closeSession()
Description copied from class:SVNRepository
Closes 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.- Specified by:
closeSession
in classSVNRepository
-
isInvalidRevision
public static boolean isInvalidRevision(long revision)
-
isValidRevision
public static boolean isValidRevision(long revision)
-
setPath
public void setPath(java.lang.String path, java.lang.String lockToken, long revision, boolean startEmpty) throws SVNException
Description copied from interface:ISVNReporter
Describes a local path as being at a particular revision.
If
startEmpty
is true and thepath
is a directory, an implementor should assume the directory has no entries or properties (used in checkouts and aborted updates).A next call to this method will "override" any previous
setPath()
calls made on parent paths. Thepath
is relative to the repository location specified for an SVNRepository driver.- Specified by:
setPath
in interfaceISVNReporter
- Parameters:
path
- a local item's pathlockToken
- if not null, it is a lock token for thepath
revision
- the local item's revision numberstartEmpty
- if true and if thepath
is a directory, then means there're no entries yet- Throws:
SVNException
- in case the repository could not be connected
-
deletePath
public void deletePath(java.lang.String path) throws SVNException
Description copied from interface:ISVNReporter
Describes a working copypath
as deleted or missing.- Specified by:
deletePath
in interfaceISVNReporter
- Parameters:
path
- a path relative to the root of the report- Throws:
SVNException
- in case the repository could not be connected
-
linkPath
public void linkPath(SVNURL url, java.lang.String path, java.lang.String lockToken, long revision, boolean startEmpty) throws SVNException
Description copied from interface:ISVNReporter
Describes a local path as being at a particular revision to switch the path to a different repository location. LikesetPath()
, but differs in that the local item'spath
(relative to the root of the report driver) isn't a reflection of the path in the repository, but is instead a reflection of a different repository path at arevision
. IfstartEmpty
is set and thepath
is a directory, the implementor should assume the directory has no entries or properties.- Specified by:
linkPath
in interfaceISVNReporter
- Parameters:
url
- a new repository location to switch topath
- the local item's pathlockToken
- if not null, it is a lock token for thepath
revision
- the local item's revision numberstartEmpty
- if true and if thepath
is a directory, then means there're no entries yet- Throws:
SVNException
- in case the repository could not be connected
-
linkPath
public void linkPath(SVNURL url, java.lang.String path, java.lang.String lockToken, long revision, SVNDepth depth, boolean startEmpty) throws SVNException
Description copied from interface:ISVNReporter
Describes a local path as being at a particular revision to switch the path to a different repository location. LikeISVNReporter.setPath(String, String, long, SVNDepth, boolean)
, but differs in that the local item'spath
(relative to the root of the report driver) isn't a reflection of the path in the repository, but is instead a reflection of a different repositoryurl
atrevision
, and has depthdepth
.path
may not be underneath a path on whichISVNReporter.setPath(String, String, long, SVNDepth, boolean)
was previously called withSVNDepth.EXCLUDE
in this report. IfstartEmpty
is set andpath
is a directory, that will mean that the directory has no entries or props. IflockToken
is non-null, it is the lock token forpath
in the local tree.- Specified by:
linkPath
in interfaceISVNReporter
- Parameters:
url
- a new repository location to switch topath
- the local item's pathlockToken
- if not null, it is a lock token for thepath
revision
- the local item's revision numberdepth
- depth ofpath
startEmpty
- if true and if thepath
is a directory, then means there're no entries yet- Throws:
SVNException
- in case the repository could not be connected
-
setPath
public void setPath(java.lang.String path, java.lang.String lockToken, long revision, SVNDepth depth, boolean startEmpty) throws SVNException
Description copied from interface:ISVNReporter
Describes a working copypath
as being at a particularrevision
and having depthdepth
.revision
may be invalid (<0
) if (for example)path
represents a locally-added path with no revision number, ordepth
isSVNDepth.EXCLUDE
.path
may not be underneath a path on whichsetPath()
was previously called withSVNDepth.EXCLUDE
in this report. IfstartEmpty
is set andpath
is a directory, this will mean that the directory has no entries or properties. This will *override* any previoussetPath()
calls made on parent paths.path
is relative to thelocation
of the repository access object. IflockToken
is non-null, it is the lock token forpath
in the local tree.- Specified by:
setPath
in interfaceISVNReporter
- Parameters:
path
- a local item's pathlockToken
- if not null, it is a lock token for thepath
revision
- the local item's revision numberdepth
- depth ofpath
startEmpty
- if true and if thepath
is a directory, then means there're no entries yet- Throws:
SVNException
- in case the repository could not be connected
-
beginReport
public FSTranslateReporter beginReport(long revision, SVNURL url, java.lang.String target, boolean ignoreAncestry, boolean sendTextDeltas, boolean sendCopyFromArgs, SVNDepth depth, ISVNEditor editor) throws SVNException
- Throws:
SVNException
-
update
public void update(long revision, java.lang.String target, SVNDepth depth, boolean sendCopyFromArgs, ISVNReporterBaton reporter, ISVNEditor editor) throws SVNException
Description copied from class:SVNRepository
Updates a path receiving changes from a repository.target
is the name (one-level path component) of an entry that will restrict the scope of the update to this entry. In other wordstarget
is 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"
, andtarget
may be"dirB"
.If
target
is null or empty (""
) then the scope of the update operation is the repository location to which this object is set.The
reporter
is used to describe the state of the local item(s) (i.e. items' revision numbers, deleted, switched items). All the paths described by thereporter
should be relative to the repository location to which this object is set.After that the
editor
is used to carry out all the work on updating. Thiseditor
contains knowledge of where the change will begin (whenISVNEditor.openRoot()
is called).NOTE: you may not invoke methods of this SVNRepository object from within the provided
reporter
andeditor
.- Specified by:
update
in classSVNRepository
- Parameters:
revision
- a desired revision to make update to; defaults to the latest revision (HEAD)target
- an entry name (optional)depth
- a depth for update operation, determines the scope of the updatereporter
- a caller's reportereditor
- a caller's editor- Throws:
SVNException
- in case the repository could not be connectedSVNAuthenticationException
- in case of authentication problems- See Also:
SVNRepository.update(long, String, boolean, ISVNReporterBaton, ISVNEditor)
,ISVNReporterBaton
,ISVNReporter
,ISVNEditor
, Using ISVNReporter/ISVNEditor in update-related operations
-
update
public void update(SVNURL url, long revision, java.lang.String target, SVNDepth depth, ISVNReporterBaton reporter, ISVNEditor editor) throws SVNException
Description copied from class:SVNRepository
Asks this repository access object to 'switch' a versioned tree to a newurl
. The client initially provides aneditor
; this editor contains knowledge of where the change will begin in the working copy (ISVNEditor.openRoot(long)
is called). In return, the client receives aISVNReporter
object in hisISVNReporterBaton
implementation. The client then describes its working copy by making calls into the reporter object. When finished, the client callsISVNReporter.finishReport()
. ThisSVNRepository
object then does a complete drive ofeditor
, ending withISVNEditor.closeEdit()
, to switch the working copy.target
is an optional single path component that will restrict the scope of things affected by the switch to an entry in the directory represented by thelocation
of this object, or null if the entire directory is meant to be switched. Switches the target only as deeply asdepth
indicates. The local tree will be switched torevision
, or the HEAD revision if this arg is invalid. The caller may not perform any repository access operations using thisSVNRepository
object before finishing the report, and may not perform any repository access operations using thisSVNRepository
object from within the editing operations ofeditor
. Note: the reporter provided by this function does NOT supply copy-from information to the diff editor callbacks. Note: in order to prevent pre-1.5 servers from doing more work than needed, and sending too much data back, a pre-1.5 'recurse' directive may be sent to the server, based ondepth
.- Specified by:
update
in classSVNRepository
- 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)depth
- the depth for update operationreporter
- a caller's reportereditor
- a caller's editor- Throws:
SVNException
- See Also:
ISVNReporterBaton
,ISVNReporter
,ISVNEditor
, Using ISVNReporter/ISVNEditor in update-related operations
-
diff
public void diff(SVNURL url, long targetRevision, long revision, java.lang.String target, boolean ignoreAncestry, SVNDepth depth, boolean getContents, ISVNReporterBaton reporter, ISVNEditor editor) throws SVNException
Description copied from class:SVNRepository
Asks this repository access object to 'diff' a working copy againsttargetRevision
. Note: this method cannot be used to diff a single file, only a directory. See theSVNRepository.update(SVNURL, long, String, SVNDepth, ISVNReporterBaton, ISVNEditor)
method for more details. The client initially provides aneditor
; this editor contains knowledge of where the common diff root is in the working copy (whenISVNEditor.openRoot(long)
is called). In return, the client receives aISVNReporter
object in hisISVNReporterBaton
implementation. The client then describes its working copy by making calls into the reporter object. When finished, the client callsISVNReporter.finishReport()
. ThisSVNRepository
object then does a complete drive ofeditor
, ending withISVNEditor.closeEdit()
, to transmit the diff.target
is an optional single path component that will restrict the scope of things affected by the switch to an entry in the directory represented by thelocation
of this object, or null if the entire directory is meant to be switched. The working copy will be diffed againsturl
as it exists in revisiontargeRevision
, or as it is in HEAD iftargetRevision
is invalid (<0
). UseignoreAncestry
to control whether or not items being diffed will be checked for relatedness first. Unrelated items are typically transmitted to the editor as a deletion of one thing and the addition of another, but if this flag is true, unrelated items will be diffed as if they were related. Diffs only as deeply asdepth
indicates. The caller may not perform any repository access operations using thisSVNRepository
object before finishing the report, and may not perform any repository access operations using thisSVNRepository
object from within the editing operations ofeditor
.getContents
instructs the driver of theeditor
to enable the generation of text deltas. IfgetContents
is false theeditor
'sISVNDeltaConsumer.textDeltaChunk(String, SVNDiffWindow)
method will be called once withSVNDiffWindow.EMPTY
. Note: the reporter provided by this function does NOT supply copy-from information to the diff editor callbacks. Note: in order to prevent pre-1.5 servers from doing more work than needed, and sending too much data back, a pre-1.5 'recurse' directive may be sent to the server, based ondepth
.- Specified by:
diff
in classSVNRepository
- 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 notdepth
- tree depth to processgetContents
- if false contents (diff windows) will not be sent to the editorreporter
- a caller's reportereditor
- a caller's editor- Throws:
SVNException
- in the following cases:url
not found neither in the specifiedrevision
nor in the HEAD revision- a failure occured while connecting to a repository
- the user authentication failed
(see
SVNAuthenticationException
)
-
status
public void status(long revision, java.lang.String target, SVNDepth depth, ISVNReporterBaton reporter, ISVNEditor editor) throws SVNException
Description copied from class:SVNRepository
Gets status of a path to the particulardepth
as a scope.SVNRepository.status(long, String, boolean, ISVNReporterBaton, ISVNEditor)
- Specified by:
status
in classSVNRepository
- Parameters:
revision
- a desired revision to get status against; defaults to the latest revision (HEAD)target
- an entry name (optional)depth
- defines the status scopereporter
- 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:
SVNRepository.status(long, String, boolean, ISVNReporterBaton, ISVNEditor)
,ISVNReporterBaton
,ISVNEditor
-
hasCapability
public boolean hasCapability(SVNCapability capability) throws SVNException
Description copied from class:SVNRepository
Returnstrue
if the repository has specifiedcapability
. This method may need to establish connection with the repository if information on capabilities has not been received yet from the repository.- Specified by:
hasCapability
in classSVNRepository
- Parameters:
capability
- one ofSVNCapability
- Returns:
- boolean if the repository has specified capability
- Throws:
SVNException
- in case the repository could not be connectedSVNAuthenticationException
- in case of authentication problems- See Also:
SVNCapability
-
getInheritedPropertiesImpl
protected void getInheritedPropertiesImpl(java.lang.String path, long revision, java.lang.String propertyName, ISVNInheritedPropertiesHandler handler) throws SVNException
- Specified by:
getInheritedPropertiesImpl
in classSVNRepository
- Throws:
SVNException
-
closeRepository
void closeRepository() throws SVNException
- Throws:
SVNException
-
getMergeInfoImpl
protected java.util.Map getMergeInfoImpl(java.lang.String[] paths, long revision, SVNMergeInfoInheritance inherit, boolean includeDescendants) throws SVNException
- Specified by:
getMergeInfoImpl
in classSVNRepository
- Throws:
SVNException
-
getCommitEditorInternal
protected ISVNEditor getCommitEditorInternal(java.util.Map locks, boolean keepLocks, SVNProperties revProps, ISVNWorkspaceMediator mediator) throws SVNException
- Specified by:
getCommitEditorInternal
in classSVNRepository
- Throws:
SVNException
-
replayRangeImpl
protected void replayRangeImpl(long startRevision, long endRevision, long lowRevision, boolean sendDeltas, ISVNReplayHandler handler) throws SVNException
- Specified by:
replayRangeImpl
in classSVNRepository
- Throws:
SVNException
-
getDeletedRevisionImpl
protected long getDeletedRevisionImpl(java.lang.String path, long pegRevision, long endRevision) throws SVNException
- Specified by:
getDeletedRevisionImpl
in classSVNRepository
- Throws:
SVNException
-
openRepository
private void openRepository() throws SVNException
- Throws:
SVNException
-
openRepositoryRoot
private void openRepositoryRoot() throws SVNException
- Throws:
SVNException
-
getDirEntries
private java.util.Collection getDirEntries(FSRevisionNode parent, SVNURL parentURL, int entryFields) throws SVNException
- Throws:
SVNException
-
collectProperties
private SVNProperties collectProperties(FSRevisionNode revNode) throws SVNException
- Throws:
SVNException
-
buildDirEntry
private SVNDirEntry buildDirEntry(FSEntry repEntry, SVNURL parentURL, FSRevisionNode entryNode, int entryFields) throws SVNException
- Throws:
SVNException
-
makeReporterContext
private void makeReporterContext(long targetRevision, java.lang.String target, SVNURL switchURL, SVNDepth depth, boolean ignoreAncestry, boolean textDeltas, boolean sendCopyFromArgs, ISVNEditor editor) throws SVNException
- Throws:
SVNException
-
getUserName
private java.lang.String getUserName() throws SVNException
- Throws:
SVNException
-
getLocationsFinder
private FSLocationsFinder getLocationsFinder()
-
getMergeInfoManager
private SVNMergeInfoManager getMergeInfoManager()
-
getLogDriver
private FSLog getLogDriver(java.lang.String[] absPaths, long limit, long histStart, long histEnd, boolean isDescendingOrder, boolean discoverChangedPaths, boolean strictNode, boolean includeMergedRevisions, java.lang.String[] revPropNames, ISVNLogEntryHandler handler)
-
-