org.tmatesoft.svn.core.wc

## Class SVNWCClient

- java.lang.Object
- - org.tmatesoft.svn.core.wc.SVNBasicClient
  - - org.tmatesoft.svn.core.wc.SVNWCClient

- All Implemented Interfaces:
    ISVNCanceller, ISVNEventHandler

      public class SVNWCClient
      extends SVNBasicClient

  The SVNWCClient class combines a number of version control operations mainly intended for local work with Working Copy items. This class includes those operations that are destined only for local work on a Working Copy as well as those that are moreover able to access a repository.

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

  SVNKit | Subversion
  doAdd() | 'svn add'
  doDelete() | 'svn delete'
  doCleanup() | 'svn cleanup'
  doInfo() | 'svn info'
  doLock() | 'svn lock'
  doUnlock() | 'svn unlock'
  doSetProperty() | 'svn propset PROPNAME PROPVAL PATH' 'svn propdel PROPNAME PATH' 'svn propedit PROPNAME PATH'
  doSetRevisionProperty() | 'svn propset PROPNAME --revprop -r REV PROPVAL [URL]' 'svn propdel PROPNAME --revprop -r REV [URL]' 'svn propedit PROPNAME --revprop -r REV [URL]'
  doGetProperty() | 'svn propget PROPNAME PATH' 'svn proplist PATH'
  doGetRevisionProperty() | 'svn propget PROPNAME --revprop -r REV [URL]' 'svn proplist --revprop -r REV [URL]'
  doResolve() | 'svn resolved'
  doRevert() | 'svn revert'

  Since:
    1.2
  Version:
    1.3
  Author:
    TMate Software Ltd.
  See Also:
    Examples

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.tmatesoft.svn.core.wc.SVNBasicClient

      `SVNBasicClient.RepositoryReference, SVNBasicClient.SVNRepositoryLocation`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static ISVNAddParameters` | `DEFAULT_ADD_PARAMETERS` Default implementation of `ISVNAddParameters` which `onInconsistentEOLs(File file)` always returns the `ISVNAddParameters.REPORT_ERROR` action.

    - ### Fields inherited from interface org.tmatesoft.svn.core.wc.ISVNEventHandler

      `UNKNOWN`

    - ### Fields inherited from interface org.tmatesoft.svn.core.ISVNCanceller

      `NULL`

  - ### Constructor Summary

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

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `doAdd(java.io.File[] paths, boolean force, boolean mkdir, boolean climbUnversionedParents, SVNDepth depth, boolean depthIsSticky, boolean includeIgnored, boolean makeParents)` Schedules working copy `paths` for addition to the repository.
    `void` | `doAdd(java.io.File path, boolean force, boolean mkdir, boolean climbUnversionedParents, boolean recursive)` Deprecated. use `doAdd(File, boolean, boolean, boolean, SVNDepth, boolean, boolean)` instead
    `void` | `doAdd(java.io.File path, boolean force, boolean mkdir, boolean climbUnversionedParents, boolean recursive, boolean includeIgnored)` Deprecated. use `doAdd(File, boolean, boolean, boolean, SVNDepth, boolean, boolean)` instead
    `void` | `doAdd(java.io.File path, boolean force, boolean mkdir, boolean climbUnversionedParents, SVNDepth depth, boolean includeIgnored, boolean makeParents)` Schedules a working copy `path` for addition to the repository.
    `void` | `doAdd(java.io.File path, boolean force, boolean mkdir, boolean climbUnversionedParents, SVNDepth depth, boolean depthIsSticky, boolean includeIgnored, boolean makeParents)` Schedules a working copy `path` for addition to the repository.
    `void` | `doCleanup(java.io.File path)` Cleans up a working copy.
    `void` | `doCleanup(java.io.File path, boolean deleteWCProperties)` Recursively cleans up the working copy, removing locks and resuming unfinished operations.
    `void` | `doCleanupWCProperties(java.io.File directory)` Recursively removes all DAV-specific "svn:wc:" properties from the `directory` and beneath.
    `void` | `doDelete(java.io.File path, boolean force, boolean dryRun)` Schedules a Working Copy item for deletion.
    `void` | `doDelete(java.io.File path, boolean force, boolean deleteFiles, boolean dryRun)` Schedules a Working Copy item for deletion.
    `void` | `doGetFileContents(java.io.File path, SVNRevision pegRevision, SVNRevision revision, boolean expandKeywords, java.io.OutputStream dst)` Outputs the content of file identified by `path` and `revision` to the stream `dst`.
    `void` | `doGetFileContents(SVNURL url, SVNRevision pegRevision, SVNRevision revision, boolean expandKeywords, java.io.OutputStream dst)` Outputs the content of file identified by `url` and `revision` to the stream `dst`.
    `SVNPropertyData` | `doGetProperty(java.io.File path, java.lang.String propName, SVNRevision pegRevision, SVNRevision revision)` Gets the value of the property `propName` for `path`.
    `void` | `doGetProperty(java.io.File path, java.lang.String propName, SVNRevision pegRevision, SVNRevision revision, boolean recursive, ISVNPropertyHandler handler)` Deprecated. use `doGetProperty(File, String, SVNRevision, SVNRevision, SVNDepth, ISVNPropertyHandler, Collection)` instead
    `void` | `doGetProperty(java.io.File path, java.lang.String propName, SVNRevision pegRevision, SVNRevision revision, SVNDepth depth, ISVNPropertyHandler handler, java.util.Collection changeLists)` Invokes `handler` on paths covered by `depth` starting with the specified `path`.
    `SVNPropertyData` | `doGetProperty(SVNURL url, java.lang.String propName, SVNRevision pegRevision, SVNRevision revision)` Gets the value of the property `propName` for `url`.
    `void` | `doGetProperty(SVNURL url, java.lang.String propName, SVNRevision pegRevision, SVNRevision revision, boolean recursive, ISVNPropertyHandler handler)` Deprecated. use `doGetProperty(SVNURL, String, SVNRevision, SVNRevision, SVNDepth, ISVNPropertyHandler)` instead
    `void` | `doGetProperty(SVNURL url, java.lang.String propName, SVNRevision pegRevision, SVNRevision revision, SVNDepth depth, ISVNPropertyHandler handler)` Invokes `handler` on paths covered by `depth` starting with the specified `path`.
    `void` | `doGetRevisionProperty(java.io.File path, java.lang.String propName, SVNRevision revision, ISVNPropertyHandler handler)` Gets an unversioned revision property from a repository (getting a repository URL from a Working Copy) and passes it to a provided property handler.
    `long` | `doGetRevisionProperty(SVNURL url, java.lang.String propName, SVNRevision revision, ISVNPropertyHandler handler)` Gets an unversioned revision property from a repository and passes it to a provided property handler.
    `java.lang.String` | `doGetWorkingCopyID(java.io.File path, java.lang.String trailURL)` Returns the current Working Copy min- and max- revisions as well as changes and switch status within a single string.
    `java.lang.String` | `doGetWorkingCopyID(java.io.File path, java.lang.String trailURL, boolean committed)` Returns the current Working Copy min- and max- revisions as well as changes and switch status within a single string.
    `SVNInfo` | `doInfo(java.io.File path, SVNRevision revision)` Collects and returns information on a single Working Copy item.
    `void` | `doInfo(java.io.File path, SVNRevision revision, boolean recursive, ISVNInfoHandler handler)` Deprecated. use `doInfo(File, SVNRevision, SVNRevision, SVNDepth, Collection, ISVNInfoHandler)` instead
    `void` | `doInfo(java.io.File path, SVNRevision pegRevision, SVNRevision revision, boolean recursive, ISVNInfoHandler handler)` Deprecated. use `doInfo(File, SVNRevision, SVNRevision, SVNDepth, Collection, ISVNInfoHandler)` instead
    `void` | `doInfo(java.io.File path, SVNRevision pegRevision, SVNRevision revision, SVNDepth depth, java.util.Collection changeLists, ISVNInfoHandler handler)` Invokes `handler` to return information about `path` in `revision`.
    `SVNInfo` | `doInfo(SVNURL url, SVNRevision pegRevision, SVNRevision revision)` Collects and returns information on a single item in a repository.
    `void` | `doInfo(SVNURL url, SVNRevision pegRevision, SVNRevision revision, boolean recursive, ISVNInfoHandler handler)` Deprecated. use `doInfo(SVNURL, SVNRevision, SVNRevision, SVNDepth, ISVNInfoHandler)` instead
    `void` | `doInfo(SVNURL url, SVNRevision pegRevision, SVNRevision revision, SVNDepth depth, ISVNInfoHandler handler)` Invokes `handler` to return information about `url` in `revision`.
    `void` | `doLock(java.io.File[] paths, boolean stealLock, java.lang.String lockMessage)` Locks file items in a Working Copy as well as in a repository so that no other user can commit changes to them.
    `void` | `doLock(SVNURL[] urls, boolean stealLock, java.lang.String lockMessage)` Locks file items in a repository so that no other user can commit changes to them.
    `void` | `doMarkReplaced(java.io.File path)` Schedules `path` as being replaced.
    `void` | `doResolve(java.io.File path, boolean recursive)` Deprecated. use `doResolve(File, SVNDepth, SVNConflictChoice)` instead
    `void` | `doResolve(java.io.File path, SVNDepth depth, boolean resolveContents, boolean resolveProperties, boolean resolveTree, SVNConflictChoice conflictChoice)` Performs automatic conflict resolution on a working copy `path`.
    `void` | `doResolve(java.io.File path, SVNDepth depth, boolean resolveContents, boolean resolveProperties, SVNConflictChoice conflictChoice)` Performs automatic conflict resolution on a working copy `path`.
    `void` | `doResolve(java.io.File path, SVNDepth depth, SVNConflictChoice conflictChoice)` Performs automatic conflict resolution on a working copy `path`.
    `void` | `doRevert(java.io.File[] paths, boolean recursive)` Deprecated. use `doRevert(File[], SVNDepth, Collection)` instead
    `void` | `doRevert(java.io.File[] paths, SVNDepth depth, java.util.Collection changeLists)` Restores the pristine version of working copy `paths`, effectively undoing any local mods.
    `void` | `doRevert(java.io.File path, boolean recursive)` Deprecated. use `doRevert(File[], SVNDepth, Collection)`
    `void` | `doSetProperty(java.io.File path, ISVNPropertyValueProvider propertyValueProvider, boolean skipChecks, SVNDepth depth, ISVNPropertyHandler handler, java.util.Collection changeLists)` Crawls the working copy at `path` and calls `ISVNPropertyValueProvider.providePropertyValues(java.io.File, org.tmatesoft.svn.core.SVNProperties)` to get properties to be change on each path being traversed If `depth` is `SVNDepth.EMPTY`, change the properties on `path` only; if `SVNDepth.FILES`, change the properties on `path` and its file children (if any); if `SVNDepth.IMMEDIATES`, on `path` and all of its immediate children (both files and directories); if `SVNDepth.INFINITY`, on `path` and everything beneath it.
    `void` | `doSetProperty(java.io.File path, java.lang.String propName, SVNPropertyValue propValue, boolean force, boolean recursive, ISVNPropertyHandler handler)` Deprecated. use `doSetProperty(File, String, SVNPropertyValue, boolean, SVNDepth, ISVNPropertyHandler, Collection)` instead
    `void` | `doSetProperty(java.io.File path, java.lang.String propName, SVNPropertyValue propValue, boolean skipChecks, SVNDepth depth, ISVNPropertyHandler handler, java.util.Collection changeLists)` Sets `propName` to `propValue` on `path`.
    `SVNCommitInfo` | `doSetProperty(SVNURL url, java.lang.String propName, SVNPropertyValue propValue, SVNRevision baseRevision, java.lang.String commitMessage, SVNProperties revisionProperties, boolean skipChecks, ISVNPropertyHandler handler)` Sets `propName` to `propValue` on `path`.
    `void` | `doSetRevisionProperty(java.io.File path, SVNRevision revision, java.lang.String propName, SVNPropertyValue propValue, boolean force, ISVNPropertyHandler handler)` Set `propName` to `propValue` on revision `revision` in the repository represented by `path`.
    `void` | `doSetRevisionProperty(SVNURL url, SVNRevision revision, java.lang.String propName, SVNPropertyValue propValue, boolean force, ISVNPropertyHandler handler)` Set `propName` to `propValue` on revision `revision` in the repository represented by `path`.
    `void` | `doSetWCFormat(java.io.File directory, int format)` Changes working copy format.
    `void` | `doUnlock(java.io.File[] paths, boolean breakLock)` Unlocks file items in a Working Copy as well as in a repository.
    `void` | `doUnlock(SVNURL[] urls, boolean breakLock)` Unlocks file items in a repository.
    `protected ISVNAddParameters` | `getAddParameters()` Returns the add parameters object used by this object.
    `ISVNCommitHandler` | `getCommitHandler()` Returns the specified commit handler (if set) being in use or a default one (DefaultSVNCommitHandler) if no special implementations of ISVNCommitHandler were previousely provided.
    `void` | `setAddParameters(ISVNAddParameters addParameters)` Sets custom add parameters to this client object.
    `void` | `setCommitHandler(ISVNCommitHandler handler)` Sets an implementation of ISVNCommitHandler to the commit handler that will be used during commit operations to handle commit log messages.

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

      `checkCancelled, createRepository, createRepository, createRepository, createWCAccess, createWCAccess, deriveLocation, dispatchEvent, dispatchEvent, elideMergeInfo, ensureSessionURL, getDebugLog, getEntryLocation, getEventDispatcher, getLevelsToLockFromDepth, getLocations, getOptions, getPathLastChangeRevision, getPathRelativeToRoot, getRepositoryPool, getReposMergeInfo, getReposRoot, getRevisionNumber, getRevisionNumber, getURL, getWCMergeInfo, getWCOrRepositoryMergeInfo, handleEvent, handlePathListItem, isIgnoreExternals, isLeaveConflictsUnresolved, resolveRevisions, setCommitItemAccess, setCommitItemProperty, setDebugLog, setEventHandler, setEventPathPrefix, setIgnoreExternals, setLeaveConflictsUnresolved, setOptions, setPathListHandler, sleepForTimeStamp`

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

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

- - ### Field Detail

    - #### DEFAULT_ADD_PARAMETERS

          public static ISVNAddParameters DEFAULT_ADD_PARAMETERS

      Default implementation of `ISVNAddParameters` which `onInconsistentEOLs(File file)` always returns the `ISVNAddParameters.REPORT_ERROR` action.
      Since:
        1.2

  - ### Constructor Detail

    - #### SVNWCClient

          public SVNWCClient(ISVNAuthenticationManager authManager,
                     ISVNOptions options)

      Constructs and initializes an SVNWCClient object with the specified run-time configuration and authentication drivers.

      If `options` is null, then this SVNWCClient 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 SVNWCClient 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

    - #### SVNWCClient

          public SVNWCClient(ISVNRepositoryPool repositoryPool,
                     ISVNOptions options)

      Constructs and initializes an SVNWCClient object with the specified run-time configuration and repository pool object.

      If `options` is null, then this SVNWCClient 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

  - ### Method Detail

    - #### setAddParameters

          public void setAddParameters(ISVNAddParameters addParameters)

      Sets custom add parameters to this client object.
      Parameters:
        `addParameters` - extra parameters for add operations
      Since:
        1.2

    - #### getCommitHandler

          public ISVNCommitHandler getCommitHandler()

      Returns the specified commit handler (if set) being in use or a default one (DefaultSVNCommitHandler) if no special implementations of ISVNCommitHandler were previousely provided.
      Returns:
        the commit handler being in use or a default one
      See Also:
        `setCommitHandler(ISVNCommitHandler)`, `DefaultSVNCommitHandler`

    - #### setCommitHandler

          public void setCommitHandler(ISVNCommitHandler handler)

      Sets an implementation of ISVNCommitHandler to the commit handler that will be used during commit operations to handle commit log messages. The handler will receive a clien's log message and items (represented as SVNCommitItem objects) that will be committed. Depending on implementor's aims the initial log message can be modified (or something else) and returned back.

      If using SVNWCClient without specifying any commit handler then a default one will be used - `DefaultSVNCommitHandler`.
      Parameters:
        `handler` - an implementor's handler that will be used to handle commit log messages
      See Also:
        `getCommitHandler()`, `ISVNCommitHandler`

    - #### getAddParameters

          protected ISVNAddParameters getAddParameters()

      Returns the add parameters object used by this object. If no custom object was specified through a call to `setAddParameters(ISVNAddParameters)` then `DEFAULT_ADD_PARAMETERS` is returned.
      Returns:
        add parameters object
      Since:
        1.2

    - #### doGetFileContents

          public void doGetFileContents(java.io.File path,
                               SVNRevision pegRevision,
                               SVNRevision revision,
                               boolean expandKeywords,
                               java.io.OutputStream dst)
                                 throws SVNException

      Outputs the content of file identified by `path` and `revision` to the stream `dst`. The actual node revision selected is determined by the path as it exists in `pegRevision`. If `pegRevision` is `SVNRevision.UNDEFINED`, then it defaults to `SVNRevision.WORKING`.

      If revision is one of:
      - `SVNRevision.BASE`
      - `SVNRevision.WORKING`
      - `SVNRevision.COMMITTED`
      then the file contents are taken from the working copy file item (no network connection is needed). Otherwise the file item's contents are taken from the repository at a particular revision.
      Parameters:
        `path` - working copy path
        `pegRevision` - revision in which the file item is first looked up
        `revision` - target revision
        `expandKeywords` - if true then all keywords presenting in the file and listed in the file's `SVNProperty.KEYWORDS` property (if set) will be substituted, otherwise not
        `dst` - the destination where the file contents will be written to
      Throws:
        `SVNException` - if one of the following is true:
        - `path` refers to a directory
        - `path` does not exist
        - `path` is not under version control
      See Also:
        `doGetFileContents(SVNURL,SVNRevision,SVNRevision,boolean,OutputStream)`

    - #### doGetFileContents

          public void doGetFileContents(SVNURL url,
                               SVNRevision pegRevision,
                               SVNRevision revision,
                               boolean expandKeywords,
                               java.io.OutputStream dst)
                                 throws SVNException

      Outputs the content of file identified by `url` and `revision` to the stream `dst`. The actual node revision selected is determined by the path as it exists in `pegRevision`. If `pegRevision` is `SVNRevision.UNDEFINED`, then it defaults to `SVNRevision.HEAD`.
      Parameters:
        `url` - a file item's repository location
        `pegRevision` - a revision in which the file item is first looked up
        `revision` - a target revision
        `expandKeywords` - if true then all keywords presenting in the file and listed in the file's `SVNProperty.KEYWORDS` property (if set) will be substituted, otherwise not
        `dst` - the destination where the file contents will be written to
      Throws:
        `SVNException` - if one of the following is true:
        - `url` refers to a directory
        - it's impossible to create temporary files (`createTempFile()` fails) necessary for file translating
      See Also:
        `doGetFileContents(File,SVNRevision,SVNRevision,boolean,OutputStream)`

    - #### doCleanup

          public void doCleanup(java.io.File path)
                         throws SVNException

      Cleans up a working copy. This method is equivalent to a call to `doCleanup(path, false)`.
      Parameters:
        `path` - a WC path to start a cleanup from
      Throws:
        `SVNException` - if one of the following is true:
        - `path` does not exist
        - `path`'s parent directory is not under version control
      See Also:
        `doCleanup(File, boolean)`

    - #### doCleanup

          public void doCleanup(java.io.File path,
                       boolean deleteWCProperties)
                         throws SVNException

      Recursively cleans up the working copy, removing locks and resuming unfinished operations.

      If you ever get a "working copy locked" error, use this method to remove stale locks and get your working copy into a usable state again.

      This method operates only on working copies and does not open any network connection.

      Parameters:
        `path` - a WC path to start a cleanup from
        `deleteWCProperties` - if true, removes DAV specific "svn:wc:" properties from the working copy
      Throws:
        `SVNException` - if one of the following is true:
        - `path` does not exist
        - `path`'s parent directory is not under version control

    - #### doSetProperty

          public void doSetProperty(java.io.File path,
                           java.lang.String propName,
                           SVNPropertyValue propValue,
                           boolean skipChecks,
                           SVNDepth depth,
                           ISVNPropertyHandler handler,
                           java.util.Collection changeLists)
                             throws SVNException

      Sets `propName` to `propValue` on `path`. A `propValue` of null will delete the property.

      If `depth` is `SVNDepth.EMPTY`, set the property on `path` only; if `SVNDepth.FILES`, set it on `path` and its file children (if any); if `SVNDepth.IMMEDIATES`, on `path` and all of its immediate children (both files and directories); if `SVNDepth.INFINITY`, on `path` and everything beneath it.

      If `propName` is an svn-controlled property (i.e. prefixed with "svn:"), then the caller is responsible for ensuring that the value uses LF line-endings.

      If `skipChecks` is true, this method does no validity checking. But if `skipChecks` is false, and `propName` is not a valid property for `path`, it throws an exception, either with an error code `SVNErrorCode.ILLEGAL_TARGET` (if the property is not appropriate for `path`), or with `SVNErrorCode.BAD_MIME_TYPE` (if `propName` is "svn:mime-type", but `propVal` is not a valid mime-type).

      `changeLists` is a collection of `String` changelist names, used as a restrictive filter on items whose properties are set; that is, don't set properties on any item unless it's a member of one of those changelists. If `changelists` is empty (or null), no changelist filtering occurs.

      This method operates only on working copies and does not open any network connection.

      Parameters:
        `path` - working copy path
        `propName` - property name
        `propValue` - property value
        `skipChecks` - true to force the operation to run without validity checking
        `depth` - working copy tree depth to process
        `handler` - a caller's property handler
        `changeLists` - changelist names
      Throws:
        `SVNException` -
        - `path` does not exist
        - exception with `SVNErrorCode.CLIENT_PROPERTY_NAME` error code - if `propName` is a revision property name or not a valid property name or not a regular property name (one starting with a "svn:entry" or "svn:wc" prefix)
      Since:
        1.2, SVN 1.5
      See Also:
        `doSetProperty(SVNURL, String, SVNPropertyValue, SVNRevision, String, SVNProperties, boolean, ISVNPropertyHandler)`

    - #### doSetProperty

          public void doSetProperty(java.io.File path,
                           ISVNPropertyValueProvider propertyValueProvider,
                           boolean skipChecks,
                           SVNDepth depth,
                           ISVNPropertyHandler handler,
                           java.util.Collection changeLists)
                             throws SVNException

      Crawls the working copy at `path` and calls `ISVNPropertyValueProvider.providePropertyValues(java.io.File, org.tmatesoft.svn.core.SVNProperties)` to get properties to be change on each path being traversed

      If `depth` is `SVNDepth.EMPTY`, change the properties on `path` only; if `SVNDepth.FILES`, change the properties on `path` and its file children (if any); if `SVNDepth.IMMEDIATES`, on `path` and all of its immediate children (both files and directories); if `SVNDepth.INFINITY`, on `path` and everything beneath it.

      If `skipChecks` is true, this method does no validity checking of changed properties. But if `skipChecks` is false, and changed property name is not a valid property for `path`, it throws an exception, either with an error code `SVNErrorCode.ILLEGAL_TARGET` (if the property is not appropriate for `path`), or with `SVNErrorCode.BAD_MIME_TYPE` (if changed propery name is "svn:mime-type", but changed property value is not a valid mime-type).

      `changeLists` is a collection of `String` changelist names, used as a restrictive filter on items whose properties are set; that is, don't set properties on any item unless it's a member of one of those changelists. If `changelists` is empty (or null), no changelist filtering occurs.

      This method operates only on working copies and does not open any network connection.

      Parameters:
        `path` - working copy path
        `propertyValueProvider` - changed properties provider
        `skipChecks` - true to force the operation to run without validity checking
        `depth` - working copy tree depth to process
        `handler` - a caller's property handler
        `changeLists` - changelist names
      Throws:
        `SVNException` -
        - `path` does not exist
        - exception with `SVNErrorCode.CLIENT_PROPERTY_NAME` error code - if changed property name is a revision property name or not a valid property name or not a regular property name (one starting with a "svn:entry" or "svn:wc" prefix)
      Since:
        1.2, SVN 1.5
      See Also:
        `doSetProperty(java.io.File, String, org.tmatesoft.svn.core.SVNPropertyValue, boolean, org.tmatesoft.svn.core.SVNDepth, ISVNPropertyHandler, java.util.Collection)`

    - #### doSetProperty

          public SVNCommitInfo doSetProperty(SVNURL url,
                                    java.lang.String propName,
                                    SVNPropertyValue propValue,
                                    SVNRevision baseRevision,
                                    java.lang.String commitMessage,
                                    SVNProperties revisionProperties,
                                    boolean skipChecks,
                                    ISVNPropertyHandler handler)
                                      throws SVNException

      Sets `propName` to `propValue` on `path`. A `propValue` of null will delete the property.

      `baseRevision` must not be null; in this case, the property will only be set if it has not changed since `baseRevision`.

      The `authentication manager` and `commit handler`, either provided by a caller or default ones, will be used to immediately attempt to commit the property change in the repository.

      If `propName` is an svn-controlled property (i.e. prefixed with "svn:"), then the caller is responsible for ensuring that the value uses LF line-endings.

      If `skipChecks` is true, this method does no validity checking. But if `skipChecks` is false, and `propName` is not a valid property for `path`, it throws an exception, either with an error code `SVNErrorCode.ILLEGAL_TARGET` (if the property is not appropriate for `path`), or with `SVNErrorCode.BAD_MIME_TYPE` (if `propName` is "svn:mime-type", but `propVal` is not a valid mime-type).

      If non-null, `revisionProperties` is an `SVNProperties` object holding additional, custom revision properties (`String` names mapped to `String` values) to be set on the new revision in the event that this is a committing operation. This table cannot contain any standard Subversion properties.
      Parameters:
        `url` - versioned item url
        `propName` - property name
        `propValue` - property value
        `baseRevision` - revision to change properties against
        `commitMessage` - commit log message
        `revisionProperties` - custom revision properties to set
        `skipChecks` - true to force the operation to run without validity checking
        `handler` - a caller's property handler
      Returns:
        commit information if the commit succeeds
      Throws:
        `SVNException` -
        - `url` does not exist in `baseRevision`
        - exception with `SVNErrorCode.CLIENT_PROPERTY_NAME` error code - if `propName` is a revision property name or not a valid property name or not a regular property name (one starting with an "svn:entry" or "svn:wc" prefix)
        - exception with `SVNErrorCode.UNSUPPORTED_FEATURE` error code - if `propName` is either equal to `SVNProperty.EOL_STYLE` or `SVNProperty.KEYWORDS` or `SVNProperty.CHARSET`
      Since:
        1.2, SVN 1.5
      See Also:
        `doSetProperty(File, String, SVNPropertyValue, boolean, SVNDepth, ISVNPropertyHandler, Collection)`

    - #### doSetRevisionProperty

          public void doSetRevisionProperty(java.io.File path,
                                   SVNRevision revision,
                                   java.lang.String propName,
                                   SVNPropertyValue propValue,
                                   boolean force,
                                   ISVNPropertyHandler handler)
                                     throws SVNException

      Set `propName` to `propValue` on revision `revision` in the repository represented by `path`.

      This method simply obtains a url given a working path and calls `doSetRevisionProperty(SVNURL, SVNRevision, String, SVNPropertyValue, boolean, ISVNPropertyHandler)` passing this url and the rest parameters.
      Parameters:
        `path` - working copy path
        `revision` - revision which properties are to be modified
        `propName` - property name
        `propValue` - property value
        `force` - if true allows newlines in the author property
        `handler` - caller's property handler
      Throws:
        `SVNException` - if one of the following is true:
        - exception with `SVNErrorCode.CLIENT_PROPERTY_NAME` error code - if `propName` is invalid
        - exceptions thrown by `doSetRevisionProperty(SVNURL, SVNRevision, String, SVNPropertyValue, boolean, ISVNPropertyHandler)`

    - #### doSetRevisionProperty

          public void doSetRevisionProperty(SVNURL url,
                                   SVNRevision revision,
                                   java.lang.String propName,
                                   SVNPropertyValue propValue,
                                   boolean force,
                                   ISVNPropertyHandler handler)
                                     throws SVNException

      Set `propName` to `propValue` on revision `revision` in the repository represented by `path`. A `propValue` of null will delete the property. The `authentication manager`, either provided by a caller or a default one, will be used for authentication.

      If `propName` is an svn-controlled property (i.e. prefixed with "svn:"), then the caller is responsible for ensuring that the value is UTF8-encoded and uses LF line-endings.

      Although this routine accepts a working copy path it doesn't affect the working copy at all; it's a pure network operation that changes an *unversioned* property attached to a revision. This can be used to tweak log messages, dates, authors, and the like. Be careful: it's a lossy operation.

      Also note that unless the administrator creates a pre-revprop-change hook in the repository, this feature will fail.

      Parameters:
        `url` - repository URL
        `revision` - revision which properties are to be modified
        `propName` - property name
        `propValue` - property value
        `force` - if true allows newlines in the author property
        `handler` - caller's property handler
      Throws:
        `SVNException` - if one of the following is true:
        - the operation can not be performed without forcing
        - `propName` is either invalid or not a regular property name (one starting with an "svn:entry" or "svn:wc" prefix)
      See Also:
        `doSetRevisionProperty(File, SVNRevision, String, SVNPropertyValue, boolean, ISVNPropertyHandler)`

    - #### doGetProperty

          public SVNPropertyData doGetProperty(java.io.File path,
                                      java.lang.String propName,
                                      SVNRevision pegRevision,
                                      SVNRevision revision)
                                        throws SVNException

      Gets the value of the property `propName` for `path`. This method simply creates an implementation of `ISVNPropertyHandler` which stores the value only for `path` which is then used in the following call to `doGetProperty(path, propName, pegRevision, revision, SVNDepth.EMPTY, handler, null)`.
      Parameters:
        `path` - a WC item's path
        `propName` - an item's property name; if it's null then all the item's properties will be retrieved but only the first of them returned
        `pegRevision` - a revision in which the item is first looked up
        `revision` - a target revision;
      Returns:
        the item's property
      Throws:
        `SVNException` - if one of the following is true:
        - `propName` starts with the `svn:wc:` prefix
        - `path` is not under version control
      See Also:
        `doGetProperty(File, String, SVNRevision, SVNRevision, SVNDepth, ISVNPropertyHandler, Collection)`

    - #### doGetProperty

          public SVNPropertyData doGetProperty(SVNURL url,
                                      java.lang.String propName,
                                      SVNRevision pegRevision,
                                      SVNRevision revision)
                                        throws SVNException

      Gets the value of the property `propName` for `url`. This method simply creates an implementation of `ISVNPropertyHandler` which stores the value only for `path` which is then used in the following call to `doGetProperty(url, propName, pegRevision, revision, SVNDepth.EMPTY, handler)`.
      Parameters:
        `url` - an item's repository location
        `propName` - an item's property name; if it's null then all the item's properties will be retrieved but only the first of them returned
        `pegRevision` - a revision in which the item is first looked up
        `revision` - a target revision;
      Returns:
        the item's property
      Throws:
        `SVNException` - if one of the following is true:
        - `propName` starts with the `svn:wc:` prefix
        - `path` is not under version control
      See Also:
        `doGetProperty(SVNURL, String, SVNRevision, SVNRevision, SVNDepth, ISVNPropertyHandler)`

    - #### doGetProperty

          public void doGetProperty(java.io.File path,
                           java.lang.String propName,
                           SVNRevision pegRevision,
                           SVNRevision revision,
                           boolean recursive,
                           ISVNPropertyHandler handler)
                             throws SVNException

      Deprecated. use `doGetProperty(File, String, SVNRevision, SVNRevision, SVNDepth, ISVNPropertyHandler, Collection)` instead
      Gets an item's versioned property and passes it to a provided property handler. It's possible to get either a local property (from a Working Copy) or a remote one (located in a repository). If revision is one of:
      - `BASE`
      - `WORKING`
      - `COMMITTED`
      then the result is a WC item's property. Otherwise the property is taken from a repository (using the item's URL).
      Parameters:
        `path` - a WC item's path
        `propName` - an item's property name; if it's null then all the item's properties will be retrieved and passed to `handler` for processing
        `pegRevision` - a revision in which the item is first looked up
        `revision` - a target revision;
        `recursive` - true to descend recursively
        `handler` - a caller's property handler
      Throws:
        `SVNException` - if one of the following is true:
        - `propName` starts with the `svn:wc:` prefix
        - `path` is not under version control

    - #### doGetProperty

          public void doGetProperty(java.io.File path,
                           java.lang.String propName,
                           SVNRevision pegRevision,
                           SVNRevision revision,
                           SVNDepth depth,
                           ISVNPropertyHandler handler,
                           java.util.Collection changeLists)
                             throws SVNException

      Invokes `handler` on paths covered by `depth` starting with the specified `path`.

      If both revision and `pegRevision` are ones of:
      - `BASE`
      - `WORKING`
      - `COMMITTED`
      - `SVNRevision.UNDEFINED`
      then this method gets properties from the working copy without connecting to the repository. Otherwise properties are taken from the repository (using the item's URL).

      The actual node revision selected is determined by the path as it exists in `pegRevision`. If `pegRevision` is `SVNRevision.UNDEFINED`, then it defaults to `SVNRevision.WORKING`.

      If `depth` is `SVNDepth.EMPTY`, fetch the property from `path` only; if `SVNDepth.FILES`, fetch from `path` and its file children (if any); if `SVNDepth.IMMEDIATES`, from `path` and all of its immediate children (both files and directories); if `SVNDepth.INFINITY`, from `path` and everything beneath it.

      `changeLists` is a collection of `String changelist names, used as a restrictive filter on items whose properties are set; that is, don't set properties on any item unless it's a member of one of those changelists. If `changeLists` is empty (or null), no changelist filtering occurs.`
      Parameters:
        `path` - a WC item's path
        `propName` - an item's property name; if it's null then all the item's properties will be retrieved and passed to `handler` for processing
        `pegRevision` - a revision in which the item is first looked up
        `revision` - a target revision
        `depth` - tree depth
        `handler` - a caller's property handler
        `changeLists` - collection of changelist names
      Throws:
        `SVNException` - if one of the following is true:
        - `propName` starts with the `SVNProperty.SVN_WC_PREFIX` prefix
        - `path` is not under version control
      Since:
        1.2, SVN 1.5

    - #### doGetProperty

          public void doGetProperty(SVNURL url,
                           java.lang.String propName,
                           SVNRevision pegRevision,
                           SVNRevision revision,
                           boolean recursive,
                           ISVNPropertyHandler handler)
                             throws SVNException

      Deprecated. use `doGetProperty(SVNURL, String, SVNRevision, SVNRevision, SVNDepth, ISVNPropertyHandler)` instead
      Gets an item's versioned property from a repository and passes it to a provided property handler. This method is useful when having no Working Copy at all.
      Parameters:
        `url` - an item's repository location
        `propName` - an item's property name; if it's null then all the item's properties will be retrieved and passed to `handler` for processing
        `pegRevision` - a revision in which the item is first looked up
        `revision` - a target revision
        `recursive` - true to descend recursively
        `handler` - a caller's property handler
      Throws:
        `SVNException` - if `propName` starts with the `svn:wc:` prefix

    - #### doGetProperty

          public void doGetProperty(SVNURL url,
                           java.lang.String propName,
                           SVNRevision pegRevision,
                           SVNRevision revision,
                           SVNDepth depth,
                           ISVNPropertyHandler handler)
                             throws SVNException

      Invokes `handler` on paths covered by `depth` starting with the specified `path`.

      If `` is `SVNRevision.UNDEFINED` then get properties from the repository head. Else get the properties as of `revision`. The actual node revision selected is determined by the path as it exists in `pegRevision`. If `pegRevision` is `SVNRevision.UNDEFINED`, then it defaults to `SVNRevision.HEAD`.

      If `depth` is `SVNDepth.EMPTY`, fetch the property from `path` only; if `SVNDepth.FILES`, fetch from `path` and its file children (if any); if `SVNDepth.IMMEDIATES`, from `path` and all of its immediate children (both files and directories); if `SVNDepth.INFINITY`, from `path` and everything beneath it.
      Parameters:
        `url` - versioned item url
        `propName` - an item's property name; if it's null then all the item's properties will be retrieved and passed to `handler` for processing
        `pegRevision` - a revision in which the item is first looked up
        `revision` - a target revision
        `depth` - tree depth
        `handler` - a caller's property handler
      Throws:
        `SVNException` - if one of the following is true:
        - `propName` starts with the `SVNProperty.SVN_WC_PREFIX` prefix
        - `path` is not under version control
      Since:
        1.2, SVN 1.5

    - #### doGetRevisionProperty

          public void doGetRevisionProperty(java.io.File path,
                                   java.lang.String propName,
                                   SVNRevision revision,
                                   ISVNPropertyHandler handler)
                                     throws SVNException

      Gets an unversioned revision property from a repository (getting a repository URL from a Working Copy) and passes it to a provided property handler.
      Parameters:
        `path` - a local Working Copy item which repository location is used to connect to a repository
        `propName` - a revision property name; if this parameter is null then all the revision properties will be retrieved and passed to `handler` for processing
        `revision` - a revision which property is to be retrieved
        `handler` - a caller's property handler
      Throws:
        `SVNException` - if one of the following is true:
        - `revision` is invalid
        - `propName` starts with the `svn:wc:` prefix
      See Also:
        `doGetRevisionProperty(SVNURL,String,SVNRevision,ISVNPropertyHandler)`

    - #### doGetRevisionProperty

          public long doGetRevisionProperty(SVNURL url,
                                   java.lang.String propName,
                                   SVNRevision revision,
                                   ISVNPropertyHandler handler)
                                     throws SVNException

      Gets an unversioned revision property from a repository and passes it to a provided property handler.
      Parameters:
        `url` - a URL pointing to a repository location which revision property is to be got
        `propName` - a revision property name; if this parameter is null then all the revision properties will be retrieved and passed to `handler` for processing
        `revision` - a revision which property is to be retrieved
        `handler` - a caller's property handler
      Returns:
        actual revision number to which `revision` is resolved
      Throws:
        `SVNException` - if one of the following is true:
        - `revision` is invalid
        - `propName` starts with the `svn:wc:` prefix
      See Also:
        `doGetRevisionProperty(File,String,SVNRevision,ISVNPropertyHandler)`

    - #### doDelete

          public void doDelete(java.io.File path,
                      boolean force,
                      boolean dryRun)
                        throws SVNException

      Schedules a Working Copy item for deletion. This method is equivalent to `doDelete(path, force, true, dryRun)`.
      Parameters:
        `path` - a WC item to be deleted
        `force` - true to force the operation to run
        `dryRun` - true only to try the delete operation without actual deleting
      Throws:
        `SVNException` - if one of the following is true:
        - `path` is not under version control
        - can not delete `path` without forcing
      See Also:
        `doDelete(File,boolean,boolean,boolean)`

    - #### doDelete

          public void doDelete(java.io.File path,
                      boolean force,
                      boolean deleteFiles,
                      boolean dryRun)
                        throws SVNException

      Schedules a Working Copy item for deletion. This method allows to choose - whether file item(s) are to be deleted from the filesystem or not. Another version of the `doDelete()` method is similar to the corresponding SVN client's command - `'svn delete'` as it always deletes files from the filesystem.

      This method deletes only local working copy paths without connecting to the repository.
      Parameters:
        `path` - a WC item to be deleted
        `force` - true to force the operation to run
        `deleteFiles` - if true then files will be scheduled for deletion as well as deleted from the filesystem, otherwise files will be only scheduled for addition and still be present in the filesystem
        `dryRun` - true only to try the delete operation without actual deleting
      Throws:
        `SVNException` - if one of the following is true:
        - `path` is not under version control
        - can not delete `path` without forcing

    - #### doAdd

          public void doAdd(java.io.File path,
                   boolean force,
                   boolean mkdir,
                   boolean climbUnversionedParents,
                   boolean recursive)
                     throws SVNException

      Deprecated. use `doAdd(File, boolean, boolean, boolean, SVNDepth, boolean, boolean)` instead
      Schedules an unversioned item for addition to a repository thus putting it under version control.

      To create and add to version control a new directory, set `mkdir` to true.

      Calling this method is equivalent to `doAdd(path, force, mkdir, climbUnversionedParents, recursive, false)`.
      Parameters:
        `path` - a path to be put under version control (will be added to a repository in next commit)
        `force` - when true forces the operation to run on already versioned files or directories without reporting error. When ran recursively, all unversioned files and directories in a tree will be scheduled for addition.
        `mkdir` - if true - creates a new directory and schedules it for addition
        `climbUnversionedParents` - if true and `path` is located in an unversioned parent directory then the parent will be automatically scheduled for addition, too
        `recursive` - true to descend recursively (relevant for directories)
      Throws:
        `SVNException` - if one of the following is true:
        - `path` doesn't belong to a Working Copy
        - `path` doesn't exist and `mkdir` is false
        - `path` is the root directory of the Working Copy

    - #### doAdd

          public void doAdd(java.io.File path,
                   boolean force,
                   boolean mkdir,
                   boolean climbUnversionedParents,
                   boolean recursive,
                   boolean includeIgnored)
                     throws SVNException

      Deprecated. use `doAdd(File, boolean, boolean, boolean, SVNDepth, boolean, boolean)` instead
      Schedules an unversioned item for addition to a repository thus putting it under version control.

      To create and add to version control a new directory, set `mkdir` to true.
      Parameters:
        `path` - a path to be put under version control (will be added to a repository in next commit)
        `force` - when true forces the operation to run on already versioned files or directories without reporting error. When ran recursively, all unversioned files and directories in a tree will be scheduled for addition.
        `mkdir` - if true - creates a new directory and schedules it for addition
        `climbUnversionedParents` - if true and `path` is located in an unversioned parent directory then the parent will be automatically scheduled for addition, too
        `recursive` - true to descend recursively (relevant for directories)
        `includeIgnored` - controls whether ignored items must be also added
      Throws:
        `SVNException` - if one of the following is true:
        - `path` doesn't belong to a Working Copy
        - `path` doesn't exist and `mkdir` is false
        - `path` is the root directory of the Working Copy
      Since:
        1.1

    - #### doAdd

          public void doAdd(java.io.File path,
                   boolean force,
                   boolean mkdir,
                   boolean climbUnversionedParents,
                   SVNDepth depth,
                   boolean includeIgnored,
                   boolean makeParents)
                     throws SVNException

      Schedules a working copy `path` for addition to the repository.

      If `depth` is `SVNDepth.EMPTY`, adds just `path` and nothing below it. If `SVNDepth.FILES`, adds `path` and any file children of `path`. If `SVNDepth.IMMEDIATES`, adds `path`, any file children, and any immediate subdirectories (but nothing underneath those subdirectories). If `SVNDepth.INFINITY`, adds `path` and everything under it fully recursively.

      `path`'s parent must be under revision control already (unless `makeParents` is true), but `path` is not.

      If `force` is set, `path` is a directory, `depth` is `SVNDepth.INFINITY`, then schedules for addition unversioned files and directories scattered deep within a versioned tree.

      If `includeIgnored` is false, doesn't add files or directories that match ignore patterns.

      If `makeParents` is true, recurse up `path`'s directory and look for a versioned directory. If found, add all intermediate paths between it and `path`.

      Important: this is a *scheduling* operation. No changes will happen to the repository until a commit occurs. This scheduling can be removed with a call to `doRevert(File[], SVNDepth, Collection)`.
      Parameters:
        `path` - working copy path
        `force` - if true
        `mkdir` - does not throw exceptions on already-versioned items
        `climbUnversionedParents` - not used; make use of `makeParents` instead
        `depth` - tree depth
        `includeIgnored` - if true, does not apply ignore patterns to paths being added
        `makeParents` - if true, climb upper and schedule also all unversioned paths in the way
      Throws:
        `SVNException` -
        exception with `SVNErrorCode.ENTRY_EXISTS` error code - if `force` is not set and `path` is already under version
        exception with `SVNErrorCode.CLIENT_NO_VERSIONED_PARENT` error code - if `makeParents` is true but no unversioned paths stepping upper from `path` are found
      Since:
        1.2, SVN 1.5

    - #### doAdd

          public void doAdd(java.io.File[] paths,
                   boolean force,
                   boolean mkdir,
                   boolean climbUnversionedParents,
                   SVNDepth depth,
                   boolean depthIsSticky,
                   boolean includeIgnored,
                   boolean makeParents)
                     throws SVNException

      Schedules working copy `paths` for addition to the repository.

      If `depth` is `SVNDepth.EMPTY`, adds just `paths` and nothing below it. If `SVNDepth.FILES`, adds `paths` and any file children of `paths`. If `SVNDepth.IMMEDIATES`, adds `paths`, any file children, and any immediate subdirectories (but nothing underneath those subdirectories). If `SVNDepth.INFINITY`, adds `paths` and everything under it fully recursively.

      `paths`' parent must be under revision control already (unless `makeParents` is true), but `paths` are not.

      If `force` is set, path is a directory, `depth` is `SVNDepth.INFINITY`, then schedules for addition unversioned files and directories scattered deep within a versioned tree.

      If `includeIgnored` is false, doesn't add files or directories that match ignore patterns.

      If `makeParents` is true, recurse up path's directory and look for a versioned directory. If found, add all intermediate paths between it and the path.

      Important: this is a *scheduling* operation. No changes will happen to the repository until a commit occurs. This scheduling can be removed with a call to `doRevert(File[], SVNDepth, Collection)`.
      Parameters:
        `paths` - working copy paths to add
        `force` - if true
        `mkdir` - does not throw exceptions on already-versioned items
        `climbUnversionedParents` - not used; make use of `makeParents` instead
        `depth` - tree depth
        `depthIsSticky` - if depth should be recorded to the working copy
        `includeIgnored` - if true, does not apply ignore patterns to paths being added
        `makeParents` - if true, climb upper and schedule also all unversioned paths in the way
      Throws:
        `SVNException` -
        exception with `SVNErrorCode.ENTRY_EXISTS` error code - if `force` is not set and a path is already under version
        exception with `SVNErrorCode.CLIENT_NO_VERSIONED_PARENT` error code - if `makeParents` is true but no unversioned paths stepping upper from a path are found
      Since:
        1.3

    - #### doAdd

          public void doAdd(java.io.File path,
                   boolean force,
                   boolean mkdir,
                   boolean climbUnversionedParents,
                   SVNDepth depth,
                   boolean depthIsSticky,
                   boolean includeIgnored,
                   boolean makeParents)
                     throws SVNException

      Schedules a working copy `path` for addition to the repository.

      If `depth` is `SVNDepth.EMPTY`, adds just `path` and nothing below it. If `SVNDepth.FILES`, adds `path` and any file children of `path`. If `SVNDepth.IMMEDIATES`, adds `path`, any file children, and any immediate subdirectories (but nothing underneath those subdirectories). If `SVNDepth.INFINITY`, adds `path` and everything under it fully recursively.

      `path`'s parent must be under revision control already (unless `makeParents` is true), but `path` is not.

      If `force` is set, `path` is a directory, `depth` is `SVNDepth.INFINITY`, then schedules for addition unversioned files and directories scattered deep within a versioned tree.

      If `includeIgnored` is false, doesn't add files or directories that match ignore patterns.

      If `makeParents` is true, recurse up `path`'s directory and look for a versioned directory. If found, add all intermediate paths between it and `path`.

      Important: this is a *scheduling* operation. No changes will happen to the repository until a commit occurs. This scheduling can be removed with a call to `doRevert(File[], SVNDepth, Collection)`.
      Parameters:
        `path` - working copy path
        `force` - if true
        `mkdir` - does not throw exceptions on already-versioned items
        `climbUnversionedParents` - not used; make use of `makeParents` instead
        `depth` - tree depth
        `depthIsSticky` - if depth should be recorded to the working copy
        `includeIgnored` - if true, does not apply ignore patterns to paths being added
        `makeParents` - if true, climb upper and schedule also all unversioned paths in the way
      Throws:
        `SVNException` -
        exception with `SVNErrorCode.ENTRY_EXISTS` error code - if `force` is not set and `path` is already under version
        exception with `SVNErrorCode.CLIENT_NO_VERSIONED_PARENT` error code - if `makeParents` is true but no unversioned paths stepping upper from `path` are found
      Since:
        1.3

    - #### doMarkReplaced

          public void doMarkReplaced(java.io.File path)
                              throws SVNException

      Schedules `path` as being replaced. This method does not perform any deletion\addition in the filesysem nor does it require a connection to the repository. It just marks the current `path` item as being replaced.
      Parameters:
        `path` - working copy path to mark as
      Throws:
        `SVNException`
      Since:
        1.2

    - #### doRevert

          public void doRevert(java.io.File path,
                      boolean recursive)
                        throws SVNException

      Deprecated. use `doRevert(File[], SVNDepth, Collection)`
      Reverts all local changes made to a Working Copy item(s) thus bringing it to a 'pristine' state.
      Parameters:
        `path` - a WC path to perform a revert on
        `recursive` - true to descend recursively (relevant for directories)
      Throws:
        `SVNException` - if one of the following is true:
        - `path` is not under version control
        - when trying to revert an addition of a directory from within the directory itself
      See Also:
        `doRevert(File[],boolean)`

    - #### doRevert

          public void doRevert(java.io.File[] paths,
                      boolean recursive)
                        throws SVNException

      Deprecated. use `doRevert(File[], SVNDepth, Collection)` instead
      Reverts all local changes made to a Working Copy item(s) thus bringing it to a 'pristine' state.
      Parameters:
        `paths` - a WC paths to perform a revert on
        `recursive` - true to descend recursively (relevant for directories)
      Throws:
        `SVNException` - if one of the following is true:
        - `path` is not under version control
        - when trying to revert an addition of a directory from within the directory itself

        Exception will not be thrown if there are multiple paths passed. Instead caller should process events received by `ISVNEventHandler` instance to get information on whether certain path was reverted or not.

    - #### doRevert

          public void doRevert(java.io.File[] paths,
                      SVNDepth depth,
                      java.util.Collection changeLists)
                        throws SVNException

      Restores the pristine version of working copy `paths`, effectively undoing any local mods. For each path in `paths`, reverts it if it is a file. Else if it is a directory, reverts according to `depth`:

      If depth is `SVNDepth.EMPTY`, reverts just the properties on the directory; else if `SVNDepth.FILES`, reverts the properties and any files immediately under the directory; else if `SVNDepth.IMMEDIATES`, reverts all of the preceding plus properties on immediate subdirectories; else if `SVNDepth.INFINITY`, reverts path and everything under it fully recursively.

      `changeLists` is a collection of `String` changelist names, used as a restrictive filter on items reverted; that is, doesn't revert any item unless it's a member of one of those changelists. If `changeLists` is empty (or null), no changelist filtering occurs.

      If an item specified for reversion is not under version control, then does not fail with an exception, just invokes `ISVNEventHandler` using notification code `SVNEventAction.SKIP`.
      Parameters:
        `paths` - working copy paths to revert
        `depth` - tree depth
        `changeLists` - collection with changelist names
      Throws:
        `SVNException`
      Since:
        1.2, SVN 1.5

    - #### doResolve

          public void doResolve(java.io.File path,
                       boolean recursive)
                         throws SVNException

      Deprecated. use `doResolve(File, SVNDepth, SVNConflictChoice)` instead
      Resolves a 'conflicted' state on a Working Copy item.
      Parameters:
        `path` - a WC item to be resolved
        `recursive` - true to descend recursively (relevant for directories) - this will resolve the entire tree
      Throws:
        `SVNException` - if `path` is not under version control

    - #### doResolve

          public void doResolve(java.io.File path,
                       SVNDepth depth,
                       SVNConflictChoice conflictChoice)
                         throws SVNException

      Performs automatic conflict resolution on a working copy `path`.

      If `depth` is `SVNDepth.EMPTY`, acts only on `path`; if `SVNDepth.FILES`, resolves `path` and its conflicted file children (if any); if `SVNDepth.IMMEDIATES`, resolves `path` and all its immediate conflicted children (both files and directories, if any); if `SVNDepth.INFINITY`, resolves `path` and every conflicted file or directory anywhere beneath it.

      If `conflictChoice` is `SVNConflictChoice.BASE`, resolves the conflict with the old file contents; if `SVNConflictChoice.MINE_FULL`, uses the original working contents; if `SVNConflictChoice.THEIRS_FULL`, the new contents; and if `SVNConflictChoice.MERGED`, doesn't change the contents at all, just removes the conflict status, which is the pre-1.2 (pre-SVN 1.5) behavior.

      `SVNConflictChoice.THEIRS_CONFLICT` and `SVNConflictChoice.MINE_CONFLICT` are not legal for binary files or properties.

      If `path` is not in a state of conflict to begin with, does nothing. If `path`'s conflict state is removed and caller's `ISVNEntryHandler` is not null, then an `SVNEventAction.RESOLVED` event is dispatched to the handler.

      This is equivalent to calling `doResolve(path, depth, true, true, conflictChoice)`.
      Parameters:
        `path` - working copy path
        `depth` - tree depth
        `conflictChoice` - choice object for making decision while resolving
      Throws:
        `SVNException`
      Since:
        1.2, SVN 1.5

    - #### doResolve

          public void doResolve(java.io.File path,
                       SVNDepth depth,
                       boolean resolveContents,
                       boolean resolveProperties,
                       SVNConflictChoice conflictChoice)
                         throws SVNException

      Performs automatic conflict resolution on a working copy `path`.

      If `depth` is `SVNDepth.EMPTY`, acts only on `path`; if `SVNDepth.FILES`, resolves `path` and its conflicted file children (if any); if `SVNDepth.IMMEDIATES`, resolves `path` and all its immediate conflicted children (both files and directories, if any); if `SVNDepth.INFINITY`, resolves `path` and every conflicted file or directory anywhere beneath it.

      If `conflictChoice` is `SVNConflictChoice.BASE`, resolves the conflict with the old file contents; if `SVNConflictChoice.MINE_FULL`, uses the original working contents; if `SVNConflictChoice.THEIRS_FULL`, the new contents; and if `SVNConflictChoice.MERGED`, doesn't change the contents at all, just removes the conflict status, which is the pre-1.2 (pre-SVN 1.5) behavior.

      `SVNConflictChoice.THEIRS_CONFLICT` and `SVNConflictChoice.MINE_CONFLICT` are not legal for binary files or properties.

      If `path` is not in a state of conflict to begin with, does nothing. If `path`'s conflict state is removed and caller's `ISVNEntryHandler` is not null, then an `SVNEventAction.RESOLVED` event is dispatched to the handler.
      Parameters:
        `path` - working copy path
        `depth` - tree depth
        `resolveContents` - resolve content conflict
        `resolveProperties` - resolve property conflict
        `conflictChoice` - choice object for making decision while resolving
      Throws:
        `SVNException`
      Since:
        1.2, SVN 1.5

    - #### doResolve

          public void doResolve(java.io.File path,
                       SVNDepth depth,
                       boolean resolveContents,
                       boolean resolveProperties,
                       boolean resolveTree,
                       SVNConflictChoice conflictChoice)
                         throws SVNException

      Performs automatic conflict resolution on a working copy `path`.

      If `depth` is `SVNDepth.EMPTY`, acts only on `path`; if `SVNDepth.FILES`, resolves `path` and its conflicted file children (if any); if `SVNDepth.IMMEDIATES`, resolves `path` and all its immediate conflicted children (both files and directories, if any); if `SVNDepth.INFINITY`, resolves `path` and every conflicted file or directory anywhere beneath it.

      If `conflictChoice` is `SVNConflictChoice.BASE`, resolves the conflict with the old file contents; if `SVNConflictChoice.MINE_FULL`, uses the original working contents; if `SVNConflictChoice.THEIRS_FULL`, the new contents; and if `SVNConflictChoice.MERGED`, doesn't change the contents at all, just removes the conflict status, which is the pre-1.2 (pre-SVN 1.5) behavior.

      `SVNConflictChoice.THEIRS_CONFLICT` and `SVNConflictChoice.MINE_CONFLICT` are not legal for binary files or properties.

      If `path` is not in a state of conflict to begin with, does nothing. If `path`'s conflict state is removed and caller's `ISVNEntryHandler` is not null, then an `SVNEventAction.RESOLVED` event is dispatched to the handler.
      Parameters:
        `path` - working copy path
        `depth` - tree depth
        `resolveContents` - resolve content conflict
        `resolveProperties` - resolve property conflict
        `resolveTree` - n resolve any tree conlicts
        `conflictChoice` - choice object for making decision while resolving
      Throws:
        `SVNException`
      Since:
        1.3, SVN 1.6

    - #### doLock

          public void doLock(java.io.File[] paths,
                    boolean stealLock,
                    java.lang.String lockMessage)
                      throws SVNException

      Locks file items in a Working Copy as well as in a repository so that no other user can commit changes to them.
      Parameters:
        `paths` - an array of local WC file paths that should be locked
        `stealLock` - if true then all existing locks on the specified `paths` will be "stolen"
        `lockMessage` - an optional lock comment
      Throws:
        `SVNException` - if one of the following is true:
        - a path to be locked is not under version control
        - can not obtain a URL of a local path to lock it in the repository - there's no such entry
        - `paths` to be locked belong to different repositories
      See Also:
        `doLock(SVNURL[],boolean,String)`

    - #### doLock

          public void doLock(SVNURL[] urls,
                    boolean stealLock,
                    java.lang.String lockMessage)
                      throws SVNException

      Locks file items in a repository so that no other user can commit changes to them.
      Parameters:
        `urls` - an array of URLs to be locked
        `stealLock` - if true then all existing locks on the specified `urls` will be "stolen"
        `lockMessage` - an optional lock comment
      Throws:
        `SVNException`
      See Also:
        `doLock(File[],boolean,String)`

    - #### doUnlock

          public void doUnlock(java.io.File[] paths,
                      boolean breakLock)
                        throws SVNException

      Unlocks file items in a Working Copy as well as in a repository.
      Parameters:
        `paths` - an array of local WC file paths that should be unlocked
        `breakLock` - if true and there are locks that belong to different users then those locks will be also unlocked - that is "broken"
      Throws:
        `SVNException` - if one of the following is true:
        - a path is not under version control
        - can not obtain a URL of a local path to unlock it in the repository - there's no such entry
        - if a path is not locked in the Working Copy and `breakLock` is false
        - `paths` to be unlocked belong to different repositories
      See Also:
        `doUnlock(SVNURL[],boolean)`

    - #### doUnlock

          public void doUnlock(SVNURL[] urls,
                      boolean breakLock)
                        throws SVNException

      Unlocks file items in a repository.
      Parameters:
        `urls` - an array of URLs that should be unlocked
        `breakLock` - if true and there are locks that belong to different users then those locks will be also unlocked - that is "broken"
      Throws:
        `SVNException`
      See Also:
        `doUnlock(File[],boolean)`

    - #### doInfo

          public void doInfo(java.io.File path,
                    SVNRevision revision,
                    boolean recursive,
                    ISVNInfoHandler handler)
                      throws SVNException

      Deprecated. use `doInfo(File, SVNRevision, SVNRevision, SVNDepth, Collection, ISVNInfoHandler)` instead
      Collects information about Working Copy item(s) and passes it to an info handler.

      If `revision` is valid and not local, then information will be collected on remote items (that is taken from a repository). Otherwise information is gathered on local items not accessing a repository.
      Parameters:
        `path` - a WC item on which info should be obtained
        `revision` - a target revision
        `recursive` - true to descend recursively (relevant for directories)
        `handler` - a caller's info handler
      Throws:
        `SVNException` - if one of the following is true:
        - `path` is not under version control
        - can not obtain a URL corresponding to `path` to get its information from the repository - there's no such entry
        - if a remote info: `path` is an item that does not exist in the specified `revision`

    - #### doInfo

          public void doInfo(java.io.File path,
                    SVNRevision pegRevision,
                    SVNRevision revision,
                    boolean recursive,
                    ISVNInfoHandler handler)
                      throws SVNException

      Deprecated. use `doInfo(File, SVNRevision, SVNRevision, SVNDepth, Collection, ISVNInfoHandler)` instead
      Collects information about Working Copy item(s) and passes it to an info handler.

      If `revision` & `pegRevision` are valid and not local, then information will be collected on remote items (that is taken from a repository). Otherwise information is gathered on local items not accessing a repository.
      Parameters:
        `path` - a WC item on which info should be obtained
        `pegRevision` - a revision in which `path` is first looked up
        `revision` - a target revision
        `recursive` - true to descend recursively (relevant for directories)
        `handler` - a caller's info handler
      Throws:
        `SVNException` - if one of the following is true:
        - `path` is not under version control
        - can not obtain a URL corresponding to `path` to get its information from the repository - there's no such entry
        - if a remote info: `path` is an item that does not exist in the specified `revision`

    - #### doInfo

          public void doInfo(java.io.File path,
                    SVNRevision pegRevision,
                    SVNRevision revision,
                    SVNDepth depth,
                    java.util.Collection changeLists,
                    ISVNInfoHandler handler)
                      throws SVNException

      Invokes `handler` to return information about `path` in `revision`. The information returned is system-generated metadata, not the sort of "property" metadata created by users. See `SVNInfo`.

      If both revision arguments are either null or `local`, or `invalid`, then information will be pulled solely from the working copy; no network connections will be made.

      Otherwise, information will be pulled from a repository. The actual node revision selected is determined by the `path` as it exists in `pegRevision`. If `pegRevision` is `SVNRevision.UNDEFINED`, then it defaults to `SVNRevision.WORKING`.

      If `path` is a file, just invokes `handler` on it. If it is a directory, then descends according to `depth`. If `depth` is `SVNDepth.EMPTY`, invokes `handler` on `path` and nothing else; if `SVNDepth.FILES`, on `path` and its immediate file children; if `SVNDepth.IMMEDIATES`, the preceding plus on each immediate subdirectory; if `SVNDepth.INFINITY`, then recurses fully, invoking `handler` on `path` and everything beneath it.

      `changeLists` is a collection of `String` changelist names, used as a restrictive filter on items whose info is reported; that is, doesn't report info about any item unless it's a member of one of those changelists. If `changeLists` is empty (or null), no changelist filtering occurs.
      Parameters:
        `path` - a WC item on which info should be obtained
        `pegRevision` - a revision in which `path` is first looked up
        `revision` - a target revision
        `depth` - tree depth
        `changeLists` - collection changelist names
        `handler` - caller's info handler
      Throws:
        `SVNException`
      Since:
        1.2, SVN 1.5

    - #### doInfo

          public void doInfo(SVNURL url,
                    SVNRevision pegRevision,
                    SVNRevision revision,
                    boolean recursive,
                    ISVNInfoHandler handler)
                      throws SVNException

      Deprecated. use `doInfo(SVNURL, SVNRevision, SVNRevision, SVNDepth, ISVNInfoHandler)` instead
      Collects information about item(s) in a repository and passes it to an info handler.
      Parameters:
        `url` - a URL of an item which information is to be obtained and processed
        `pegRevision` - a revision in which the item is first looked up
        `revision` - a target revision
        `recursive` - true to descend recursively (relevant for directories)
        `handler` - a caller's info handler
      Throws:
        `SVNException` - if `url` is an item that does not exist in the specified `revision`

    - #### doInfo

          public void doInfo(SVNURL url,
                    SVNRevision pegRevision,
                    SVNRevision revision,
                    SVNDepth depth,
                    ISVNInfoHandler handler)
                      throws SVNException

      Invokes `handler` to return information about `url` in `revision`. The information returned is system-generated metadata, not the sort of "property" metadata created by users. See `SVNInfo`.

      If `revision` argument is either null or `invalid`, it defaults to `SVNRevision.HEAD`. If `revision` is `SVNRevision.PREVIOUS` (or some other kind that requires a local path), an error will be returned, because the desired revision cannot be determined. If `pegRevision` argument is either null or `invalid`, it defaults to `revision`.

      Information will be pulled from the repository. The actual node revision selected is determined by the `url` as it exists in `pegRevision`. If `pegRevision` is `SVNRevision.UNDEFINED`, then it defaults to `SVNRevision.WORKING`.

      If `url` is a file, just invokes `handler` on it. If it is a directory, then descends according to `depth`. If `depth` is `SVNDepth.EMPTY`, invokes `handler` on `url` and nothing else; if `SVNDepth.FILES`, on `url` and its immediate file children; if `SVNDepth.IMMEDIATES`, the preceding plus on each immediate subdirectory; if `SVNDepth.INFINITY`, then recurses fully, invoking `handler` on `url` and everything beneath it.
      Parameters:
        `url` - versioned item url
        `pegRevision` - revision in which `path` is first looked up
        `revision` - target revision
        `depth` - tree depth
        `handler` - caller's info handler
      Throws:
        `SVNException`
      Since:
        1.2, SVN 1.5

    - #### doGetWorkingCopyID

          public java.lang.String doGetWorkingCopyID(java.io.File path,
                                            java.lang.String trailURL)
                                              throws SVNException

      Returns the current Working Copy min- and max- revisions as well as changes and switch status within a single string.

      This method is the same as `doGetWorkingCopyID(path, trailURL, false)`.
      Parameters:
        `path` - a local path
        `trailURL` - optional: if not null specifies the name of the item that should be met in the URL corresponding to the repository location of the `path`; if that URL ends with something different than this optional parameter - the Working Copy will be considered "switched"
      Returns:
        brief info on the Working Copy or the string "exported" if `path` is a clean directory
      Throws:
        `SVNException` - if `path` is neither versioned nor even exported
      See Also:
        `doGetWorkingCopyID(File, String, boolean)`

    - #### doGetWorkingCopyID

          public java.lang.String doGetWorkingCopyID(java.io.File path,
                                            java.lang.String trailURL,
                                            boolean committed)
                                              throws SVNException

      Returns the current Working Copy min- and max- revisions as well as changes and switch status within a single string.

      A return string has a form of `"minR[:maxR][M][S]"` where:
      - `minR` - is the smallest revision number met in the Working Copy
      - `maxR` - is the biggest revision number met in the Working Copy; appears only if there are different revision in the Working Copy
      - `M` - appears only if there're local edits to the Working Copy - that means 'Modified'
      - `S` - appears only if the Working Copy is switched against a different URL
      If `path` is a directory - this method recursively descends into the Working Copy, collects and processes local information.

      This method operates on local working copies only without accessing a repository.
      Parameters:
        `path` - a local path
        `trailURL` - optional: if not null specifies the name of the item that should be met in the URL corresponding to the repository location of the `path`; if that URL ends with something different than this optional parameter - the Working Copy will be considered "switched"
        `committed` - if true committed (last chaned) revisions instead of working copy ones are reported
      Returns:
        brief info on the Working Copy or the string "exported" if `path` is a clean directory
      Throws:
        `SVNException` - if `path` is neither versioned nor even exported
      Since:
        1.2

    - #### doInfo

          public SVNInfo doInfo(java.io.File path,
                       SVNRevision revision)
                         throws SVNException

      Collects and returns information on a single Working Copy item.

      This method is the same as `doInfo(path, SVNRevision.UNDEFINED, revision, SVNDepth.EMPTY, null, handler)` where `handler` just stores `SVNInfo` for the `path` and then returns it to the caller.
      Parameters:
        `path` - a WC item on which info should be obtained
        `revision` - a target revision
      Returns:
        collected info
      Throws:
        `SVNException` - if one of the following is true:
        - `path` is not under version control
        - can not obtain a URL corresponding to `path` to get its information from the repository - there's no such entry
        - if a remote info: `path` is an item that does not exist in the specified `revision`
      See Also:
        `doInfo(File, SVNRevision, SVNRevision, SVNDepth, Collection, ISVNInfoHandler)`

    - #### doInfo

          public SVNInfo doInfo(SVNURL url,
                       SVNRevision pegRevision,
                       SVNRevision revision)
                         throws SVNException

      Collects and returns information on a single item in a repository.

      This method is the same as `doInfo(url, pegRevision, revision, SVNDepth.EMPTY, handler)` where `handler` just stores `SVNInfo` for the `url`.
      Parameters:
        `url` - a URL of an item which information is to be obtained
        `pegRevision` - a revision in which the item is first looked up
        `revision` - a target revision
      Returns:
        collected info
      Throws:
        `SVNException` - if `url` is an item that does not exist in the specified `revision`
      See Also:
        `doInfo(SVNURL, SVNRevision, SVNRevision, SVNDepth, ISVNInfoHandler)`

    - #### doCleanupWCProperties

          public void doCleanupWCProperties(java.io.File directory)
                                     throws SVNException

      Recursively removes all DAV-specific "svn:wc:" properties from the `directory` and beneath.

      This method does not connect to a repository, it's a local operation only. Nor does it change any user's versioned data. Changes are made only in administrative version control files.

      Parameters:
        `directory` - working copy path
      Throws:
        `SVNException`
      Since:
        1.2

    - #### doSetWCFormat

          public void doSetWCFormat(java.io.File directory,
                           int format)
                             throws SVNException

      Changes working copy format. This method may be used to upgrade\downgrade working copy formats.

      If externals are not `ignored` then external working copies are also converted to the new working copy `format`.

      This method does not connect to a repository, it's a local operation only. Nor does it change any user's versioned data. Changes are made only in administrative version control files.

      Parameters:
        `directory` - working copy directory
        `format` - format to set, supported formats are: 9 (SVN 1.5), 8 (SVN 1.4) and 4 (SVN 1.2)
      Throws:
        `SVNException`
      Since:
        1.2

    - #### doSetProperty

          public void doSetProperty(java.io.File path,
                           java.lang.String propName,
                           SVNPropertyValue propValue,
                           boolean force,
                           boolean recursive,
                           ISVNPropertyHandler handler)
                             throws SVNException

      Deprecated. use `doSetProperty(File, String, SVNPropertyValue, boolean, SVNDepth, ISVNPropertyHandler, Collection)` instead
      This method is deprecated.
      Parameters:
        `path` - a WC item which properties are to be modified
        `propName` - a property name
        `propValue` - a property value
        `force` - true to force the operation to run
        `recursive` - true to descend recursively
        `handler` - a caller's property handler
      Throws:
        `SVNException` - if one of the following is true:
        - `propName` is a revision property
        - `propName` starts with the `svn:wc:` prefix

Copyright © 2004-2009 TMate Software Ltd. All Rights Reserved.