Package org.tmatesoft.svn.core.wc

# Class SVNLogClient

java.lang.Object
org.tmatesoft.svn.core.wc.SVNBasicClient
org.tmatesoft.svn.core.wc.SVNLogClient

public class SVNLogClient extends SVNBasicClient
The SVNLogClient class is intended for such purposes as getting revisions history, browsing repository entries and annotating file contents.

Here's a list of the SVNLogClient's methods matched against corresponing commands of the SVN command line client:

SVNKit | Subversion
doLog() | 'svn log'
doList() | 'svn list'
doAnnotate() | 'svn blame'

Since:
  1.2
Version:
  1.3
Author:
  TMate Software Ltd.

## Constructor Summary

Constructors
Constructor
Description
`SVNLogClient(ISVNAuthenticationManager authManager, ISVNOptions options)`
Constructs and initializes an SVNLogClient object with the specified run-time configuration and authentication drivers.
`SVNLogClient(ISVNRepositoryPool repositoryPool, ISVNOptions options)`
Constructs and initializes an SVNLogClient object with the specified run-time configuration and authentication drivers.
`SVNLogClient(SvnOperationFactory of)`

## Method Summary

Modifier and Type
Method
Description
`void`
`doAnnotate(File path, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean ignoreMimeType, boolean includeMergedRevisions, ISVNAnnotateHandler handler, String inputEncoding)`
Invokes `handler` on each line-blame item associated with revision `endRevision` of `path`, using `startRevision` as the default source of all blame.
`void`
`doAnnotate(File path, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean ignoreMimeType, ISVNAnnotateHandler handler)`
Obtains annotation information for each file text line from a repository (using a Working Copy path to get a corresponding URL) and passes it to a provided annotation handler.
`void`
`doAnnotate(File path, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, ISVNAnnotateHandler handler)`
Obtains annotation information for each file text line from a repository (using a Working Copy path to get a corresponding URL) and passes it to a provided annotation handler.
`void`
`doAnnotate(SVNURL url, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean ignoreMimeType, boolean includeMergedRevisions, ISVNAnnotateHandler handler, String inputEncoding)`
Invokes `handler` on each line-blame item associated with revision `endRevision` of `url`, using `startRevision` as the default source of all blame.
`void`
`doAnnotate(SVNURL url, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean ignoreMimeType, ISVNAnnotateHandler handler, String inputEncoding)`
Obtains annotation information for each file text line from a repository and passes it to a provided annotation handler.
`void`
`doAnnotate(SVNURL url, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, ISVNAnnotateHandler handler)`
Obtains annotation information for each file text line from a repository and passes it to a provided annotation handler.
`void`
`doAnnotate(SVNURL url, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, ISVNAnnotateHandler handler, String inputEncoding)`
Obtains annotation information for each file text line from a repository and passes it to a provided annotation handler.
`void`
`doList(File path, SVNRevision pegRevision, SVNRevision revision, boolean fetchLocks, boolean recursive, ISVNDirEntryHandler handler)`
Deprecated.
use `doList(File, SVNRevision, SVNRevision, boolean, SVNDepth, int, ISVNDirEntryHandler)` instead
`void`
`doList(File path, SVNRevision pegRevision, SVNRevision revision, boolean recursive, ISVNDirEntryHandler handler)`
Deprecated.
use `doList(File, SVNRevision, SVNRevision, boolean, SVNDepth, int, ISVNDirEntryHandler)` instead
`void`
`doList(File path, SVNRevision pegRevision, SVNRevision revision, boolean fetchLocks, SVNDepth depth, int entryFields, ISVNDirEntryHandler handler)`
Reports the directory entry, and possibly children, for `path` at `revision`.
`void`
`doList(SVNURL url, SVNRevision pegRevision, SVNRevision revision, boolean fetchLocks, boolean recursive, ISVNDirEntryHandler handler)`
Browses directory entries from a repository and uses the provided dir entry handler to process them.
`void`
`doList(SVNURL url, SVNRevision pegRevision, SVNRevision revision, boolean recursive, ISVNDirEntryHandler handler)`
Deprecated.
use `doList(SVNURL, SVNRevision, SVNRevision, boolean, SVNDepth, int, ISVNDirEntryHandler)` instead
`void`
`doList(SVNURL url, SVNRevision pegRevision, SVNRevision revision, boolean fetchLocks, SVNDepth depth, int entryFields, ISVNDirEntryHandler handler)`
Reports the directory entry, and possibly children, for `url` at `revision`.
`void`
`doLog(File[] paths, Collection<SVNRevisionRange> revisionRanges, SVNRevision pegRevision, boolean stopOnCopy, boolean discoverChangedPaths, boolean includeMergedRevisions, long limit, String[] revisionProperties, ISVNLogEntryHandler handler)`
Invokes `handler` on each log message from the given `revisionRanges` in turn, inclusive (but never invokes `handler` on a given log message more than once).
`void`
`doLog(File[] paths, SVNRevision startRevision, SVNRevision endRevision, boolean stopOnCopy, boolean discoverChangedPaths, long limit, ISVNLogEntryHandler handler)`
Gets commit log messages with other revision specific information from a repository (using Working Copy paths to get corresponding URLs) and passes them to a log entry handler for processing.
`void`
`doLog(File[] paths, SVNRevision startRevision, SVNRevision endRevision, SVNRevision pegRevision, boolean stopOnCopy, boolean discoverChangedPaths, boolean includeMergedRevisions, long limit, String[] revisionProperties, ISVNLogEntryHandler handler)`
Invokes `handler` on each log message from `startRevision` to `endRevision` in turn, inclusive (but never invokes `handler` on a given log message more than once).
`void`
`doLog(File[] paths, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean stopOnCopy, boolean discoverChangedPaths, long limit, ISVNLogEntryHandler handler)`
Gets commit log messages with other revision specific information from a repository (using Working Copy paths to get corresponding URLs) and passes them to a log entry handler for processing.
`void`
`doLog(SVNURL url, String[] paths, SVNRevision pegRevision, Collection<SVNRevisionRange> revisionRanges, boolean stopOnCopy, boolean discoverChangedPaths, boolean includeMergedRevisions, long limit, String[] revisionProperties, ISVNLogEntryHandler handler)`
Invokes `handler` on each log message from the given `` in turn, inclusive (but never invokes `handler` on a given log message more than once).
`void`
`doLog(SVNURL url, String[] paths, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean stopOnCopy, boolean discoverChangedPaths, boolean includeMergedRevisions, long limit, String[] revisionProperties, ISVNLogEntryHandler handler)`
Invokes `handler` on each log message from `startRevision` to `endRevision` in turn, inclusive (but never invokes `handler` on a given log message more than once).
`void`
`doLog(SVNURL url, String[] paths, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean stopOnCopy, boolean discoverChangedPaths, long limit, ISVNLogEntryHandler handler)`
Gets commit log messages with other revision specific information from a repository and passes them to a log entry handler for processing.
`SVNDiffOptions`
`getDiffOptions()`
Gets the diff options that are used in annotate operations by this client.
`protected void`
`initDefaults()`
`void`
`setDiffOptions(SVNDiffOptions diffOptions)`
Sets diff options for this client to use in annotate operations.

### Methods inherited from class org.tmatesoft.svn.core.wc.SVNBasicClient

`dontWC17Support, getDebugLog, getOperationsFactory, getOptions, getPathListHandler, getReposRoot, getReposRoot, isIgnoreExternals, isLeaveConflictsUnresolved, isWC17Supported, setDebugLog, setEventHandler, setEventPathPrefix, setIgnoreExternals, setLeaveConflictsUnresolved, setOptions, setPathListHandler`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SVNLogClient

public SVNLogClient(ISVNAuthenticationManager authManager, ISVNOptions options)
Constructs and initializes an SVNLogClient object with the specified run-time configuration and authentication drivers.

If `options` is null, then this SVNLogClient will be using a default run-time configuration driver which takes client-side settings from the default SVN's run-time configuration area but is not able to change those settings (read more on `ISVNOptions` and `SVNWCUtil`).

If `authManager` is null, then this SVNLogClient will be using a default authentication and network layers driver (see `SVNWCUtil.createDefaultAuthenticationManager()`) which uses server-side settings and auth storage from the default SVN's run-time configuration area (or system properties if that area is not found).

Parameters:
  `authManager` - an authentication and network layers driver
  `options` - a run-time configuration options driver

### SVNLogClient

public SVNLogClient(ISVNRepositoryPool repositoryPool, ISVNOptions options)
Constructs and initializes an SVNLogClient object with the specified run-time configuration and authentication drivers.

If `options` is null, then this SVNLogClient will be using a default run-time configuration driver which takes client-side settings from the default SVN's run-time configuration area but is not able to change those settings (read more on `ISVNOptions` and `SVNWCUtil`).

If `repositoryPool` is null, then `SVNRepositoryFactory` will be used to create `repository access objects`.

Parameters:
  `repositoryPool` - a repository pool object
  `options` - a run-time configuration options driver

### SVNLogClient

public SVNLogClient(SvnOperationFactory of)

## Method Details

### initDefaults

protected void initDefaults()

Overrides:
  `initDefaults` in class `SVNBasicClient`

### setDiffOptions

public void setDiffOptions(SVNDiffOptions diffOptions)
Sets diff options for this client to use in annotate operations.

Parameters:
  `diffOptions` - diff options object

### getDiffOptions

public SVNDiffOptions getDiffOptions()
Gets the diff options that are used in annotate operations by this client. Creates a new one if none was used before.

Returns:
  diff options

### doAnnotate

public void doAnnotate(File path, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, ISVNAnnotateHandler handler) throws SVNException
Obtains annotation information for each file text line from a repository (using a Working Copy path to get a corresponding URL) and passes it to a provided annotation handler.

This method is equivalent to a call to `doAnnotate(path, pegRevision, startRevision, endRevision, false, false, handler, null)`.

Parameters:
  `path` - a WC file item to be annotated
  `pegRevision` - a revision in which `path` is first looked up in the repository
  `startRevision` - a revision for an operation to start from
  `endRevision` - a revision for an operation to stop at
  `handler` - a caller's handler to process annotation information
Throws:
  `SVNException` - if `startRevision > endRevision`
See Also:
  - `doAnnotate(File, SVNRevision, SVNRevision, SVNRevision, boolean, boolean, ISVNAnnotateHandler, String)`

### doAnnotate

public void doAnnotate(File path, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean ignoreMimeType, ISVNAnnotateHandler handler) throws SVNException
Obtains annotation information for each file text line from a repository (using a Working Copy path to get a corresponding URL) and passes it to a provided annotation handler.

This method is equivalent to a call to `doAnnotate(path, pegRevision, startRevision, endRevision, ignoreMimeType, false, handler, null)`.

Parameters:
  `path` - a WC file item to be annotated
  `pegRevision` - a revision in which `path` is first looked up in the repository
  `startRevision` - a revision for an operation to start from
  `endRevision` - a revision for an operation to stop at
  `ignoreMimeType` - forces operation to run (all files to be treated as text, no matter what SVNKit has inferred from the mime-type property)
  `handler` - a caller's handler to process annotation information
Throws:
  `SVNException`
Since:
  1.1
See Also:
  - `doAnnotate(File, SVNRevision, SVNRevision, SVNRevision, boolean, boolean, ISVNAnnotateHandler, String)`

### doAnnotate

public void doAnnotate(File path, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean ignoreMimeType, boolean includeMergedRevisions, ISVNAnnotateHandler handler, String inputEncoding) throws SVNException
Invokes `handler` on each line-blame item associated with revision `endRevision` of `path`, using `startRevision` as the default source of all blame.

`pegRevision` indicates in which revision `path` is valid. If `pegRevision` is `SVNRevision.UNDEFINED`, then it defaults to `SVNRevision.WORKING`.

If `startRevision` is null or `invalid`, then it defaults to revision 1. If `endRevision` is null or `invalid`, then in defaults to `SVNRevision.HEAD`.

Note: this routine requires repository access.

Parameters:
  `path` - a WC file item to be annotated
  `pegRevision` - a revision in which `path` is first looked up in the repository
  `startRevision` - a revision for an operation to start from
  `endRevision` - a revision for an operation to stop at
  `ignoreMimeType` - forces operation to run (all files to be treated as text, no matter what SVNKit has inferred from the mime-type property)
  `includeMergedRevisions` - if true, then also returns data based upon revisions which have been merged to `path`
  `handler` - a caller's handler to process annotation information
  `inputEncoding` - character set to decode input bytes with
Throws:
  `SVNException` - in the following cases:
  exception with `SVNErrorCode.CLIENT_BAD_REVISION` error code - if both `startRevision` and `endRevision` are either null or `invalid`
  exception with `SVNErrorCode.UNSUPPORTED_FEATURE` error code - if either of `startRevision` or `endRevision` is `SVNRevision.WORKING`
  exception with `SVNErrorCode.CLIENT_IS_BINARY_FILE` error code - if any of the revisions of `path` have a binary mime-type, unless `ignoreMimeType` is true, in which case blame information will be generated regardless of the MIME types of the revisions
Since:
  1.2, SVN 1.5

### doAnnotate

public void doAnnotate(SVNURL url, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, ISVNAnnotateHandler handler) throws SVNException
Obtains annotation information for each file text line from a repository and passes it to a provided annotation handler.

This method is equivalent to a call to `doAnnotate(url, pegRevision, startRevision, endRevision, false, false, handler, null)`.

Parameters:
  `url` - a URL of a text file that is to be annotated
  `pegRevision` - a revision in which `path` is first looked up in the repository
  `startRevision` - a revision for an operation to start from
  `endRevision` - a revision for an operation to stop at
  `handler` - a caller's handler to process annotation information
Throws:
  `SVNException` - if `startRevision > endRevision`
See Also:
  - `doAnnotate(SVNURL, SVNRevision, SVNRevision, SVNRevision, boolean, boolean, ISVNAnnotateHandler, String)`

### doAnnotate

public void doAnnotate(SVNURL url, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, ISVNAnnotateHandler handler, String inputEncoding) throws SVNException
Obtains annotation information for each file text line from a repository and passes it to a provided annotation handler.

This method is equivalent to a call to `doAnnotate(url, pegRevision, startRevision, endRevision, false, false, handler, inputEncoding)`.

Parameters:
  `url` - a URL of a text file that is to be annotated
  `pegRevision` - a revision in which `path` is first looked up in the repository
  `startRevision` - a revision for an operation to start from
  `endRevision` - a revision for an operation to stop at
  `handler` - a caller's handler to process annotation information
  `inputEncoding` - a desired character set (encoding) of text lines
Throws:
  `SVNException`
See Also:
  - `doAnnotate(SVNURL, SVNRevision, SVNRevision, SVNRevision, boolean, boolean, ISVNAnnotateHandler, String)`

### doAnnotate

public void doAnnotate(SVNURL url, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean ignoreMimeType, ISVNAnnotateHandler handler, String inputEncoding) throws SVNException
Obtains annotation information for each file text line from a repository and passes it to a provided annotation handler.

This method is equivalent to a call to `doAnnotate(url, pegRevision, startRevision, endRevision, ignoreMimeType, false, handler, inputEncoding)`.

Parameters:
  `url` - a URL of a text file that is to be annotated
  `pegRevision` - a revision in which `path` is first looked up in the repository
  `startRevision` - a revision for an operation to start from
  `endRevision` - a revision for an operation to stop at
  `ignoreMimeType` - forces operation to run (all files to be treated as text, no matter what SVNKit has inferred from the mime-type property)
  `handler` - a caller's handler to process annotation information
  `inputEncoding` - a desired character set (encoding) of text lines
Throws:
  `SVNException`
Since:
  1.1
See Also:
  - `doAnnotate(SVNURL, SVNRevision, SVNRevision, SVNRevision, boolean, boolean, ISVNAnnotateHandler, String)`

### doAnnotate

public void doAnnotate(SVNURL url, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean ignoreMimeType, boolean includeMergedRevisions, ISVNAnnotateHandler handler, String inputEncoding) throws SVNException
Invokes `handler` on each line-blame item associated with revision `endRevision` of `url`, using `startRevision` as the default source of all blame.

`pegRevision` indicates in which revision `url` is valid. If `pegRevision` is `SVNRevision.UNDEFINED`, then it defaults to `SVNRevision.HEAD`.

If `startRevision` is null or `invalid`, then it defaults to revision 1. If `endRevision` is null or `invalid`, then in defaults to `SVNRevision.HEAD`.

Note: this routine requires repository access

Parameters:
  `url` - a URL of a text file that is to be annotated
  `pegRevision` - a revision in which `url` is first looked up in the repository
  `startRevision` - a revision for an operation to start from
  `endRevision` - a revision for an operation to stop at
  `ignoreMimeType` - forces operation to run (all files to be treated as text, no matter what SVNKit has inferred from the mime-type property)
  `includeMergedRevisions` - if true, then also returns data based upon revisions which have been merged to `url`
  `handler` - a caller's handler to process annotation information
  `inputEncoding` - character set to decode input bytes with
Throws:
  `SVNException` - in the following cases:
  exception with `SVNErrorCode.CLIENT_BAD_REVISION` error code - if both `startRevision` and `endRevision` are either null or `invalid`
  exception with `SVNErrorCode.UNSUPPORTED_FEATURE` error code - if either of `startRevision` or `endRevision` is `SVNRevision.WORKING`
  exception with `SVNErrorCode.CLIENT_IS_BINARY_FILE` error code - if any of the revisions of `url` have a binary mime-type, unless `ignoreMimeType` is true, in which case blame information will be generated regardless of the MIME types of the revisions
Since:
  1.2, SVN 1.5

### doLog

public void doLog(File[] paths, SVNRevision startRevision, SVNRevision endRevision, boolean stopOnCopy, boolean discoverChangedPaths, long limit, ISVNLogEntryHandler handler) throws SVNException
Gets commit log messages with other revision specific information from a repository (using Working Copy paths to get corresponding URLs) and passes them to a log entry handler for processing. Useful for observing the history of affected paths, author, date and log comments information per revision.

Calling this method is equivalent to `doLog(paths, startRevision, endRevision, SVNRevision.UNDEFINED, stopOnCopy, discoverChangedPaths, false, limit, null, handler)`.

Parameters:
  `paths` - an array of Working Copy paths, should not be null
  `startRevision` - a revision for an operation to start from (including this revision)
  `endRevision` - a revision for an operation to stop at (including this revision)
  `stopOnCopy` - true not to cross copies while traversing history, otherwise copies history will be also included into processing
  `discoverChangedPaths` - true to report of all changed paths for every revision being processed (those paths will be available by calling `SVNLogEntry.getChangedPaths()`)
  `limit` - a maximum number of log entries to be processed
  `handler` - a caller's log entry handler
Throws:
  `SVNException` - if one of the following is true:
  - a path is not under version control
  - can not obtain a URL of a WC path - there's no such entry in the Working Copy
  - `paths` contain entries that belong to different repositories
See Also:
  - `doLog(File[], SVNRevision, SVNRevision, SVNRevision, boolean, boolean, boolean, long, String[], ISVNLogEntryHandler)`

### doLog

public void doLog(File[] paths, SVNRevision startRevision, SVNRevision endRevision, SVNRevision pegRevision, boolean stopOnCopy, boolean discoverChangedPaths, boolean includeMergedRevisions, long limit, String[] revisionProperties, ISVNLogEntryHandler handler) throws SVNException
Invokes `handler` on each log message from `startRevision` to `endRevision` in turn, inclusive (but never invokes `handler` on a given log message more than once).

`handler` is invoked only on messages whose revisions involved a change to some path in `paths`. `pegRevision` indicates in which revision `paths` are valid. If `pegRevision` is `invalid`, it defaults to `SVNRevision.WORKING`.

If `limit` is non-zero, only invokes `handler` on the first `limit` logs.

If `discoverChangedPaths` is set, then the changed paths `Map` argument will be passed to a constructor of `SVNLogEntry` on each invocation of `handler`.

If `stopOnCopy` is set, copy history (if any exists) will not be traversed while harvesting revision logs for each target.

If `includeMergedRevisions` is set, log information for revisions which have been merged to `paths` will also be returned.

Refer to `SVNLogEntry.hasChildren()` for additional information on how to handle mergeinfo information during a log operation.

If `revisionProperties is null, retrieves all revision properties; else, retrieves only the revprops named in the array (i.e. retrieves none if the array is empty).

If `startRevision` is `valid` but `endRevision` is not, then `endRevision` defaults to `startRevision`. If both `startRevision` and `endRevision` are invalid, then `endRevision` defaults to revision `0`, and `startRevision` defaults either to `pegRevision` in case the latter one is valid, or to `SVNRevision.BASE`, if it is not.

Important: to avoid an exception with the `SVNErrorCode.FS_NO_SUCH_REVISION` error code when invoked against an empty repository (i.e. one not containing a revision 1), callers should specify the range `SVNRevision.HEAD`:`0`.

If the caller has provided a non-null `ISVNEventHandler`, it will be called with the `SVNEventAction.SKIP` event action on any unversioned paths.

Note: this routine requires repository access.`

Parameters:
  `paths` - an array of Working Copy paths, for which log messages are desired
  `startRevision` - a revision for an operation to start from (including this revision)
  `endRevision` - a revision for an operation to stop at (including this revision)
  `pegRevision` - a revision in which `paths` are first looked up in the repository
  `stopOnCopy` - true not to cross copies while traversing history, otherwise copies history will be also included into processing
  `discoverChangedPaths` - true to report of all changed paths for every revision being processed (those paths will be available by calling `SVNLogEntry.getChangedPaths()`)
  `includeMergedRevisions` - if true, merged revisions will be also reported
  `limit` - a maximum number of log entries to be processed
  `revisionProperties` - names of revision properties to retrieve
  `handler` - a caller's log entry handler
Throws:
  `SVNException` - if one of the following is true:
  - can not obtain a URL of a WC path - there's no such entry in the Working Copy
  - `paths` contain entries that belong to different repositories
Since:
  1.2, SVN 1.5

### doLog

public void doLog(File[] paths, Collection<SVNRevisionRange> revisionRanges, SVNRevision pegRevision, boolean stopOnCopy, boolean discoverChangedPaths, boolean includeMergedRevisions, long limit, String[] revisionProperties, ISVNLogEntryHandler handler) throws SVNException
Invokes `handler` on each log message from the given `revisionRanges` in turn, inclusive (but never invokes `handler` on a given log message more than once).

`handler` is invoked only on messages whose revisions involved a change to some path in `paths`. `pegRevision` indicates in which revision `paths` are valid. If `pegRevision` is `invalid`, it defaults to `SVNRevision.WORKING`.

If `limit` is non-zero, only invokes `handler` on the first `limit` logs.

If `discoverChangedPaths` is set, then the changed paths `Map` argument will be passed to a constructor of `SVNLogEntry` on each invocation of `handler`.

If `stopOnCopy` is set, copy history (if any exists) will not be traversed while harvesting revision logs for each target.

If `includeMergedRevisions` is set, log information for revisions which have been merged to `paths` will also be returned.

Refer to `SVNLogEntry.hasChildren()` for additional information on how to handle mergeinfo information during a log operation.

If `revisionProperties is null, retrieves all revision properties; else, retrieves only the revprops named in the array (i.e. retrieves none if the array is empty).

For every `SVNRevisionRange` in `revisionRanges`: If `startRevision` is `valid` but `endRevision` is not, then `endRevision` defaults to `startRevision`. If both `startRevision` and `endRevision` are invalid, then `endRevision` defaults to revision `0`, and `startRevision` defaults either to `pegRevision` in case the latter one is valid, or to `SVNRevision.BASE`, if it is not.

Important: to avoid an exception with the `SVNErrorCode.FS_NO_SUCH_REVISION` error code when invoked against an empty repository (i.e. one not containing a revision 1), callers should specify the range `SVNRevision.HEAD`:`0`.

If the caller has provided a non-null `ISVNEventHandler`, it will be called with the `SVNEventAction.SKIP` event action on any unversioned paths.

Note: this routine requires repository access.`

Parameters:
  `paths` - an array of Working Copy paths, for which log messages are desired
  `revisionRanges` - collection of `SVNRevisionRange` objects
  `pegRevision` - a revision in which `paths` are first looked up in the repository
  `stopOnCopy` - true not to cross copies while traversing history, otherwise copies history will be also included into processing
  `discoverChangedPaths` - true to report of all changed paths for every revision being processed (those paths will be available by calling `SVNLogEntry.getChangedPaths()`)
  `includeMergedRevisions` - if true, merged revisions will be also reported
  `limit` - a maximum number of log entries to be processed
  `revisionProperties` - names of revision properties to retrieve
  `handler` - a caller's log entry handler
Throws:
  `SVNException` - if one of the following is true:
  - can not obtain a URL of a WC path - there's no such entry in the Working Copy
  - `paths` contain entries that belong to different repositories
Since:
  1.3, SVN 1.6

### doLog

public void doLog(File[] paths, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean stopOnCopy, boolean discoverChangedPaths, long limit, ISVNLogEntryHandler handler) throws SVNException
Gets commit log messages with other revision specific information from a repository (using Working Copy paths to get corresponding URLs) and passes them to a log entry handler for processing. Useful for observing the history of affected paths, author, date and log comments information per revision.

Calling this method is equivalent to `doLog(paths, startRevision, endRevision, pegRevision, stopOnCopy, discoverChangedPaths, false, limit, null, handler)`.

Parameters:
  `paths` - an array of Working Copy paths, should not be null
  `pegRevision` - a revision in which `path` is first looked up in the repository
  `startRevision` - a revision for an operation to start from (including this revision)
  `endRevision` - a revision for an operation to stop at (including this revision)
  `stopOnCopy` - true not to cross copies while traversing history, otherwise copies history will be also included into processing
  `discoverChangedPaths` - true to report of all changed paths for every revision being processed (those paths will be available by calling `SVNLogEntry.getChangedPaths()`)
  `limit` - a maximum number of log entries to be processed
  `handler` - a caller's log entry handler
Throws:
  `SVNException` - if one of the following is true:
  - a path is not under version control
  - can not obtain a URL of a WC path - there's no such entry in the Working Copy
  - `paths` contain entries that belong to different repositories
See Also:
  - `doLog(File[], SVNRevision, SVNRevision, SVNRevision, boolean, boolean, boolean, long, String[], ISVNLogEntryHandler)`

### doLog

public void doLog(SVNURL url, String[] paths, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean stopOnCopy, boolean discoverChangedPaths, long limit, ISVNLogEntryHandler handler) throws SVNException
Gets commit log messages with other revision specific information from a repository and passes them to a log entry handler for processing. Useful for observing the history of affected paths, author, date and log comments information per revision.

Calling this method is equivalent to `doLog(url, paths, pegRevision, startRevision, endRevision, stopOnCopy, discoverChangedPaths, false, limit, null, handler)`.

Parameters:
  `url` - a target URL
  `paths` - an array of paths relative to the target `url`
  `pegRevision` - a revision in which `url` is first looked up
  `startRevision` - a revision for an operation to start from (including this revision)
  `endRevision` - a revision for an operation to stop at (including this revision)
  `stopOnCopy` - true not to cross copies while traversing history, otherwise copies history will be also included into processing
  `discoverChangedPaths` - true to report of all changed paths for every revision being processed (those paths will be available by calling `SVNLogEntry.getChangedPaths()`)
  `limit` - a maximum number of log entries to be processed
  `handler` - a caller's log entry handler
Throws:
  `SVNException`
Since:
  1.1, new in Subversion 1.4
See Also:
  - `doLog(SVNURL, String[], SVNRevision, SVNRevision, SVNRevision, boolean, boolean, boolean, long, String[], ISVNLogEntryHandler)`

### doLog

public void doLog(SVNURL url, String[] paths, SVNRevision pegRevision, SVNRevision startRevision, SVNRevision endRevision, boolean stopOnCopy, boolean discoverChangedPaths, boolean includeMergedRevisions, long limit, String[] revisionProperties, ISVNLogEntryHandler handler) throws SVNException
Invokes `handler` on each log message from `startRevision` to `endRevision` in turn, inclusive (but never invokes `handler` on a given log message more than once).

`handler` is invoked only on messages whose revisions involved a change to some path in `paths`. `pegRevision` indicates in which revision `paths` are valid. If `pegRevision` is `invalid`, it defaults to `SVNRevision.HEAD`.

If `limit` is non-zero, only invokes `handler` on the first `limit` logs.

If `discoverChangedPaths` is set, then the changed paths `Map` argument will be passed to a constructor of `SVNLogEntry` on each invocation of `handler`.

If `stopOnCopy` is set, copy history (if any exists) will not be traversed while harvesting revision logs for each target.

If `includeMergedRevisions` is set, log information for revisions which have been merged to `paths` will also be returned.

If `revisionProperties is null, retrieves all revision properties; else, retrieves only the revision properties named in the array (i.e. retrieves none if the array is empty).

Important: to avoid an exception with the `SVNErrorCode.FS_NO_SUCH_REVISION` error code when invoked against an empty repository (i.e. one not containing a revision 1), callers should specify the range `SVNRevision.HEAD`:`0`.

Note: this routine requires repository access.`

Parameters:
  `url` - repository URL
  `paths` - an array of paths relative to `url`
  `pegRevision` - a revision in which `paths` are first looked up in the repository
  `startRevision` - a revision for an operation to start from (including this revision)
  `endRevision` - a revision for an operation to stop at (including this revision)
  `stopOnCopy` - true not to cross copies while traversing history, otherwise copies history will be also included into processing
  `discoverChangedPaths` - true to report of all changed paths for every revision being processed (those paths will be available by calling `SVNLogEntry.getChangedPaths()`)
  `includeMergedRevisions` - if true, merged revisions will be also reported
  `limit` - a maximum number of log entries to be processed
  `revisionProperties` - names of revision properties to retrieve
  `handler` - a caller's log entry handler
Throws:
  `SVNException`
Since:
  1.2, SVN 1.5

### doLog

public void doLog(SVNURL url, String[] paths, SVNRevision pegRevision, Collection<SVNRevisionRange> revisionRanges, boolean stopOnCopy, boolean discoverChangedPaths, boolean includeMergedRevisions, long limit, String[] revisionProperties, ISVNLogEntryHandler handler) throws SVNException
Invokes `handler` on each log message from the given `` in turn, inclusive (but never invokes `handler` on a given log message more than once).

`handler` is invoked only on messages whose revisions involved a change to some path in `paths`. `pegRevision` indicates in which revision `paths` are valid. If `pegRevision` is `invalid`, it defaults to `SVNRevision.HEAD`.

If `limit` is non-zero, only invokes `handler` on the first `limit` logs.

If `discoverChangedPaths` is set, then the changed paths `Map` argument will be passed to a constructor of `SVNLogEntry` on each invocation of `handler`.

If `stopOnCopy` is set, copy history (if any exists) will not be traversed while harvesting revision logs for each target.

If `includeMergedRevisions` is set, log information for revisions which have been merged to `paths` will also be returned.

If `revisionProperties is null, retrieves all revision properties; else, retrieves only the revision properties named in the array (i.e. retrieves none if the array is empty).

Important: to avoid an exception with the `SVNErrorCode.FS_NO_SUCH_REVISION` error code when invoked against an empty repository (i.e. one not containing a revision 1), callers should specify the range `SVNRevision.HEAD`:`0`.

Note: this routine requires repository access.`

Parameters:
  `url` - repository URL
  `paths` - an array of paths relative to `url`
  `pegRevision` - a revision in which `paths` are first looked up in the repository
  `revisionRanges` - collection of `SVNRevisionRange` objects
  `stopOnCopy` - true not to cross copies while traversing history, otherwise copies history will be also included into processing
  `discoverChangedPaths` - true to report of all changed paths for every revision being processed (those paths will be available by calling `SVNLogEntry.getChangedPaths()`)
  `includeMergedRevisions` - if true, merged revisions will be also reported
  `limit` - a maximum number of log entries to be processed
  `revisionProperties` - names of revision properties to retrieve
  `handler` - a caller's log entry handler
Throws:
  `SVNException`
Since:
  1.3, SVN 1.6

### doList

public void doList(File path, SVNRevision pegRevision, SVNRevision revision, boolean fetchLocks, boolean recursive, ISVNDirEntryHandler handler) throws SVNException
Deprecated.
use `doList(File, SVNRevision, SVNRevision, boolean, SVNDepth, int, ISVNDirEntryHandler)` instead
Browses directory entries from a repository (using Working Copy paths to get corresponding URLs) and uses the provided dir entry handler to process them.

On every entry that this method stops it gets some useful entry information which is packed into an `SVNDirEntry` object and passed to the `handler`'s `handleDirEntry()` method.

Parameters:
  `path` - a WC item to get its repository location
  `pegRevision` - a revision in which the item's URL is first looked up
  `revision` - a target revision
  `fetchLocks` - true to fetch locks information from a repository
  `recursive` - true to descend recursively (relevant for directories)
  `handler` - a caller's directory entry handler (to process info on an entry)
Throws:
  `SVNException`

### doList

public void doList(File path, SVNRevision pegRevision, SVNRevision revision, boolean fetchLocks, SVNDepth depth, int entryFields, ISVNDirEntryHandler handler) throws SVNException
Reports the directory entry, and possibly children, for `path` at `revision`. The actual node revision selected is determined by the path as it exists in `pegRevision`. If `pegRevision` is `invalid`, then it defaults to `SVNRevision.WORKING`.

Reports directory entries by invoking `handler`, `setting` a relative to `path` path to the `SVNDirEntry` object. The directory entry for `path` is reported using an empty path. If `path` is a directory, also reports its children.

If `depth` is `SVNDepth.EMPTY`, lists just `path` itself. If `depth` is `SVNDepth.FILES` , lists `path` and its file entries. If `SVNDepth.IMMEDIATES`, lists its immediate file and directory entries. If `SVNDepth.INFINITY`, lists file entries and recurses (with `SVNDepth.INFINITY`) on directory entries.

`entryFields` controls which fields in the `SVNDirEntry` are filled in. To have them totally filled in use `SVNDirEntry.DIRENT_ALL`, otherwise simply bitwise OR together the combination of fields you care about.

Note: this routine requires repository access.

Parameters:
  `path` - a WC item to get its repository location
  `pegRevision` - a revision in which the item's URL is first looked up
  `revision` - a target revision
  `fetchLocks` - true, includes locks when reporting directory entries
  `depth` - tree depth to process
  `entryFields` - entry fields to fill
  `handler` - a caller's directory entry handler (to process info on an entry)
Throws:
  `SVNException` - in the following cases:
  exception with `SVNErrorCode.FS_NOT_FOUND` error code - if `path` is non-existent in the repository
Since:
  1.2, SVN 1.5

### doList

public void doList(File path, SVNRevision pegRevision, SVNRevision revision, boolean recursive, ISVNDirEntryHandler handler) throws SVNException
Deprecated.
use `doList(File, SVNRevision, SVNRevision, boolean, SVNDepth, int, ISVNDirEntryHandler)` instead
Browses directory entries from a repository (using Working Copy paths to get corresponding URLs) and uses the provided dir entry handler to process them.

On every entry that this method stops it gets some useful entry information which is packed into an `SVNDirEntry` object and passed to the `handler`'s `handleDirEntry()` method.

Parameters:
  `path` - a WC item to get its repository location
  `pegRevision` - a revision in which the item's URL is first looked up
  `revision` - a target revision
  `recursive` - true to descend recursively (relevant for directories)
  `handler` - a caller's directory entry handler (to process info on an entry)
Throws:
  `SVNException`

### doList

public void doList(SVNURL url, SVNRevision pegRevision, SVNRevision revision, boolean fetchLocks, boolean recursive, ISVNDirEntryHandler handler) throws SVNException
Browses directory entries from a repository and uses the provided dir entry handler to process them. This method is especially useful when having no Working Copy.

On every entry that this method stops it gets some useful entry information which is packed into an `SVNDirEntry` object and passed to the `handler`'s `handleDirEntry()` method.

Parameters:
  `url` - a repository location to be "listed"
  `pegRevision` - a revision in which the item's URL is first looked up
  `revision` - a target revision
  `fetchLocks` - true to fetch locks information from repository
  `recursive` - true to descend recursively (relevant for directories)
  `handler` - a caller's directory entry handler (to process info on an entry)
Throws:
  `SVNException`
See Also:
  - `doList(File, SVNRevision, SVNRevision, boolean, ISVNDirEntryHandler)`

### doList

public void doList(SVNURL url, SVNRevision pegRevision, SVNRevision revision, boolean fetchLocks, SVNDepth depth, int entryFields, ISVNDirEntryHandler handler) throws SVNException
Reports the directory entry, and possibly children, for `url` at `revision`. The actual node revision selected is determined by the path as it exists in `pegRevision`. If `pegRevision` is `invalid`, then it defaults to `SVNRevision.HEAD`.

Reports directory entries by invoking `handler`, `setting` a relative to `url` path to the `SVNDirEntry` object. The directory entry for `url` is reported using an empty path. If `url` is a directory, also reports its children.

If `depth` is `SVNDepth.EMPTY`, lists just `url` itself. If `depth` is `SVNDepth.FILES`, lists `url` and its file entries. If `SVNDepth.IMMEDIATES`, lists its immediate file and directory entries. If `SVNDepth.INFINITY`, lists file entries and recurses (with `SVNDepth.INFINITY`) on directory entries.

`entryFields` controls which fields in the `SVNDirEntry` are filled in. To have them totally filled in use `SVNDirEntry.DIRENT_ALL`, otherwise simply bitwise OR together the combination of fields you care about.

Note: this routine requires repository access.

Parameters:
  `url` - a repository url to be "listed"
  `pegRevision` - a revision in which the item's URL is first looked up
  `revision` - a target revision
  `fetchLocks` - true, includes locks when reporting directory entries
  `depth` - tree depth to process
  `entryFields` - entry fields to fill
  `handler` - a caller's directory entry handler (to process info on an entry)
Throws:
  `SVNException` - in the following cases:
  exception with `SVNErrorCode.FS_NOT_FOUND` error code - if `url` is non-existent in the repository
Since:
  1.2, SVN 1.5

### doList

public void doList(SVNURL url, SVNRevision pegRevision, SVNRevision revision, boolean recursive, ISVNDirEntryHandler handler) throws SVNException
Deprecated.
use `doList(SVNURL, SVNRevision, SVNRevision, boolean, SVNDepth, int, ISVNDirEntryHandler)` instead
Browses directory entries from a repository and uses the provided dir entry handler to process them. This method is especially useful when having no Working Copy.

On every entry that this method stops it gets some useful entry information which is packed into an `SVNDirEntry` object and passed to the `handler`'s `handleDirEntry()` method.

Parameters:
  `url` - a repository location to be "listed"
  `pegRevision` - a revision in which the item's URL is first looked up
  `revision` - a target revision
  `recursive` - true to descend recursively (relevant for directories)
  `handler` - a caller's directory entry handler (to process info on an entry)
Throws:
  `SVNException`