# Package org.tmatesoft.svn.core.wc

This package provides a high-level API for managing Working Copies in a way compatible with the native SVN command line client.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  ISVNAddParameters | The ISVNAddParameters is an interface for a callback which is invoked when there are inconsistent EOLs found in text files which are being scheduled for addition.
  ISVNAnnotateHandler | The ISVNAnnotateHandler interface should be implemented to be further provided to SVNLogClient's doAnnotate() methods for processing annotation information per each text line.
  ISVNChangelistHandler | The ISVNChangelistHandler is an interface for handlers used in changelist retrieval methods of `SVNChangelistClient`.
  ISVNCommitHandler | The ISVNCommitHandler should be implemented to provide an ability to manage commit log messages for items to be committed in a common transaction.
  ISVNCommitParameters | ISVNCommitParameters is the interface for parameters which set behaviour for a commit operation that touches still versioned files or dirs that are somehow missing.
  ISVNConflictHandler | The ISVNConflictHandler interface defines a callback for resolving conflicts during the application of a tree delta to a working copy.
  ISVNDiffGenerator | The ISVNDiffGenerator should be implemented by drivers generating contents difference between files in order to be used in 'diff' operations performed by SVNDiffClient.
  ISVNDiffStatusHandler | The ISVNDiffStatusHandler is used to handle diff status operations supported by the SVNDiffClient.
  ISVNEventHandler | The ISVNEventHandler interface should be implemented in order to be further provided to an SVN*Client object as a handler of a sequence of events generated by SVN*Client's do*() methods.
  ISVNExternalsHandler | The `ISVNExternalsHandler` provides interface for user defined callbacks which are used to skip externals definitions processing in some operations.
  ISVNFileFilter | `ISVNFileFilter` is used by `SVNCommitClient` during an import operation to filter out undesired paths, so that those paths do not get to a repository.
  ISVNInfoHandler | The ISVNInfoHandler interface should be implemented in order to be further provided to some of SVNWCClient's doInfo() methods to process information about Working Copy as well as remote (located in a repository) items.
  ISVNMerger | ISVNMerger is the merge driver interface used by `SVNKit` in merging operations.
  ISVNMergerFactory | The ISVNMergerFactory interface should be implemented in order to be used as a factory of merger drivers intended for merging operations.
  ISVNOptions | The ISVNOptions interface should be implemented to manage global run-time configuration options.
  ISVNPathListHandler | The ISVNPathListHandler is used by SVN*Client classes as a callback in operations performed on multiple paths.
  ISVNPropertyHandler | The ISVNPropertyHandler interface should be implemented to be further provided to SVNWCClient's property managing methods for handling properties.
  ISVNPropertyValueProvider | The ISVNPropertyValueProvider interface should be implemented to be further provided to `SVNWCClient.doSetProperty(java.io.File, ISVNPropertyValueProvider, boolean, org.tmatesoft.svn.core.SVNDepth, ISVNPropertyHandler, java.util.Collection)` method for defining properties to change.
  ISVNRepositoryPool | The ISVNRepositoryPool interface is used by SVN*Client objects to create a low-level SVN protocol driver that allows them to directly work with a repository.
  ISVNStatusFileProvider |
  ISVNStatusHandler | The ISVNStatusHandler interface should be implemented in order to be further provided to some of SVNStatusClient's doStatus() methods to handle status information of Working Copy items.

- Class Summary
  Class | Description
  --- | ---
  DefaultSVNCommitHandler | This is a default implementation for ISVNCommitHandler.
  DefaultSVNCommitParameters | DefaultSVNCommitParameters is the default commit parameters implementation.
  DefaultSVNDiffGenerator | DefaultSVNDiffGenerator is a default implementation of ISVNDiffGenerator.
  DefaultSVNRepositoryPool | The DefaultSVNRepositoryPool class is a default implementation of the ISVNRepositoryPool interface.
  ISVNAddParameters.Action | This class is simply used to define an action add operation should undertake in case of a inconsistent EOLs.
  ISVNCommitParameters.Action | This class is simply used to define an action a commit operation should undertake in case of a missing file/directory.
  SVNBasicClient | The SVNBasicClient is the base class of all SVN*Client classes that provides a common interface and realization.
  SVNChangelistClient | The SVNChangelistClient provides API for managing changelists.
  SVNClientManager | The SVNClientManager class is used to manage SVN*Client objects as well as for providing them to a user what makes the user's work easier and his code - pretty clear and flexible.
  SVNCommitClient | The SVNCommitClient class provides methods to perform operations that relate to committing changes to an SVN repository.
  SVNCommitItem | The SVNCommitItem represents a versioned item that is to be committed to a repository.
  SVNCommitPacket | The SVNCommitPacket is a storage for SVNCommitItem objects which represent information on versioned items intended for being committed to a repository.
  SVNConflictAction | The SVNConflictAction represents the type of action being attempted on an object which leads to a conflict.
  SVNConflictChoice | The SVNConflictChoice is an enumeration of constants representing the way in which the conflict `callback` chooses a course of action.
  SVNConflictDescription | The SVNConflictDescription represents an object that describes a conflict that has occurred in the working copy.
  SVNConflictReason | The SVNConflictReason class represents an enumeration of constants describing the reason of a conflict state in a working copy produced by a merge operation.
  SVNConflictResult | The SVNConflictResult represents the decision of the user's `conflict handler` regarding a conflict situation.
  SVNConflictStats |
  SVNCopyClient | The SVNCopyClient provides methods to perform any kinds of copying and moving that SVN supports - operating on both Working Copies (WC) and URLs.
  SVNCopySource | The SVNCopySource class is used to provide copy source information in copy operations.
  SVNDiffClient | The SVNDiffClient class provides methods allowing to get differences between versioned items ('diff' operation) as well as ones intended for merging file contents.
  SVNDiffOptions | The SVNDiffOptions class is used to contain some rules for controlling the result of comparing two files.
  SVNDiffStatus | The SVNDiffStatus class is used to provide short information on path changes during diff status operations.
  SVNEvent | The SVNEvent class is used to provide detailed information on an operation progress to the ISVNEventHandler (if any) registered for an SVN*Client object.
  SVNEventAction | The SVNEventAction class is used to describe an action which generated an SVNEvent object.
  SVNEventAdapter | SVNEventAdapter is an adapter class for `ISVNEventHandler`.
  SVNInfo | The SVNInfo class is a wrapper for versioned item's (located either in a Working Copy or a repository) information details.
  SVNLogClient | The SVNLogClient class is intended for such purposes as getting revisions history, browsing repository entries and annotating file contents.
  SVNMergeFileSet | The SVNMergeFileSet class holds information about the file that is to be merged.
  SVNMergeResult | The SVNMergeResult represents a result of a text or properties merge operation.
  SVNMoveClient | The SVNMoveClient provides an extra client-side functionality over standard (i.e. compatible with the SVN command line client) move operations.
  SVNOperation | SVNOperation represents the user operation that exposed a conflict.
  SVNPropertyConflictDescription | SVNPropertyConflictDescription brings a property conflict description.
  SVNPropertyData | SVNPropertyData is a wrapper for both versioned and unversioned properties.
  SVNRevision | SVNRevision is a revision wrapper used for an abstract representation of revision information.
  SVNRevisionRange | The SVNRevisionRange class represents a revision range between a start revision and an end revision.
  SVNStatus | The SVNStatus class is used to provide detailed status information for a Working Copy item as a result of a status operation invoked by a doStatus() method of SVNStatusClient.
  SVNStatusClient | The SVNStatusClient class provides methods for obtaining information on the status of Working Copy items.
  SVNStatusType | SVNStatusType provides information about versioned items' status type.
  SVNTextConflictDescription | SVNTextConflictDescription brings information about conflict on a file.
  SVNTreeConflictDescription | SVNTreeConflictDescription brings information on a tree conflict.
  SVNUpdateClient | This class provides methods which allow to check out, update, switch and relocate a Working Copy as well as export an unversioned directory or file from a repository.
  SVNWCClient | The SVNWCClient class combines a number of version control operations mainly intended for local work with Working Copy items.
  SVNWCUtil | The SVNWCUtil is a utility class providing some common methods used by Working Copy API classes for such purposes as creating default run-time configuration and authentication drivers and some others.

## Package org.tmatesoft.svn.core.wc Description

This package provides a high-level API for managing Working Copies in a way compatible with the native SVN command line client. That means if you use org.tmatesoft.svn.core.wc to operate on Working Copy files, directories and their properties you won't loose a compatibility with the SVN client - as if the copy items were managed by the SVN itself. In addition the package classes and interfaces provide a developer a high flexibility in usage: all SVN client's commands are mapped to methods of SVN*Client classes which are responsible for all version control functionality (dealing either with Working Copies or URLs). This functionality is logicaly allotted to separate classes, so that, for example, all update related operations (update, switch, etc.) are handled by the same class. And * for each of these classes is the name of that functional behaviour the class is intended for - such as SVNUpdateClient or SVNCommitClient. To have even more flexibility there's a kind of a manager class - SVNClientManager - which aggregates all of these 'client' classes making developer's work easier and more comfortable. At last the high-level API is even a bit more than just an implementation of the SVN client's operations:

- the package gives a developer an ability to implement several types of operation handlers that can be passed to some of SVN*Client's methods , thus the developer can 'take part' in operation processing;
- some of SVN*Client classes have methods for which the SVN command line client has no analogues (such as the entire SVNMoveClient class).

While the package org.tmatesoft.svn.core.io represents a low-level API and therefore 'knows' nothing of the SVN native 'Working Copy' format and structure, org.tmatesoft.svn.core.wc is contrarily a kind of a Java implementation of the SVN client's commands which can be used in a standalone Java application that needs to work with Working Copies. However if a developer has no need or even don't want to have Working Copies but something else (for instance, in case of an own client side version control system specific to developer's needs) the developer should refer to org.tmatesoft.svn.core.io rather than to org.tmatesoft.svn.core.wc.