blob: f53bea49c073cac93f13829516d88f7e80e8259e [file] [log] [blame]
/**
* @copyright
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
* @endcopyright
*/
package org.tigris.subversion.javahl;
import java.io.OutputStream;
import java.util.Map;
/**
* This interface is the common interface for all subversion
* operations. It is implemented by SVNClient and SVNClientSynchronized
*/
public interface SVNClientInterface
{
/**
* release the native peer (should not depend on finalize)
*/
void dispose();
/**
* @return Version information about the underlying native libraries.
* @since 1.0
*/
public Version getVersion();
/**
* @return The name of the working copy's administrative
* directory, which is usually <code>.svn</code>.
* @see <a
* href="https://svn.apache.org/repos/asf/subversion/trunk/notes/asp-dot-net-hack.txt">
* Instructions on changing this as a work-around for the behavior of
* ASP.Net on Windows.</a>
* @since 1.3
*/
public String getAdminDirectoryName();
/**
* @param name The name of the directory to compare.
* @return Whether <code>name</code> is that of a working copy
* administrative directory.
* @since 1.3
*/
public boolean isAdminDirectory(String name);
/**
* Returns the last destination path submitted.
* @deprecated
* @return path in Subversion format.
* @since 1.0
*/
String getLastPath();
/**
* Returns the status of a single file in the path.
*
* @param path File to gather status.
* @param onServer Request status information from the server.
* @return The Subversion status of the file, or <code>null</code>
* if no status is available.
* @deprecated Use {@link #status(String, int, boolean, boolean,
* boolean, boolean, StatusCallback)}
* instead.
* @since 1.0
*/
Status singleStatus(String path, boolean onServer) throws ClientException;
/**
* List a directory or file of the working copy.
*
* @param path Path to explore.
* @param descend Recurse into subdirectories if they exist.
* @param onServer Request status information from server.
* @param getAll get status for uninteresting (unchanged) files.
* @return Array of Status entries.
* @deprecated Use {@link #status(String, int, boolean, boolean,
* boolean, boolean, StatusCallback)}
* instead.
* @since 1.0
*/
Status[] status(String path, boolean descend, boolean onServer,
boolean getAll) throws ClientException;
/**
* List a directory or file of the working copy.
*
* @param path Path to explore.
* @param descend Recurse into subdirectories if they exist.
* @param onServer Request status information from server.
* @param getAll get status for uninteresting (unchanged) files.
* @param noIgnore get status for normally ignored files and directories.
* @return Array of Status entries.
* @deprecated Use {@link #status(String, int, boolean, boolean,
* boolean, boolean, StatusCallback)}
* instead.
* @since 1.0
*/
Status[] status(String path, boolean descend, boolean onServer,
boolean getAll, boolean noIgnore) throws ClientException;
/**
* List a directory or file of the working copy.
*
* @param path Path to explore.
* @param descend Recurse into subdirectories if they exist.
* @param onServer Request status information from server.
* @param getAll get status for uninteresting (unchanged) files.
* @param noIgnore get status for normally ignored files and directories.
* @param ignoreExternals if externals are ignored during status
* @return Array of Status entries.
* @deprecated Use {@link #status(String, int, boolean, boolean,
* boolean, boolean, StatusCallback)}
* instead.
* @since 1.2
*/
Status[] status(String path, boolean descend, boolean onServer,
boolean getAll, boolean noIgnore, boolean ignoreExternals)
throws ClientException;
/**
* List a directory or file of the working copy.
*
* @param path Path to explore.
* @param depth How deep to recurse into subdirectories.
* @param onServer Request status information from server.
* @param getAll get status for uninteresting (unchanged) files.
* @param noIgnore get status for normally ignored files and directories.
* @param ignoreExternals if externals are ignored during status
* @param changelists changelists to filter by
* @since 1.5
*/
void status(String path, int depth, boolean onServer,
boolean getAll, boolean noIgnore, boolean ignoreExternals,
String[] changelists, StatusCallback callback)
throws ClientException;
/**
* Lists the directory entries of a url on the server.
* @param url the url to list
* @param revision the revision to list
* @param recurse recurse into subdirectories
* @return Array of DirEntry objects.
* @deprecated Use {@link #list(String, Revision, Revision, int, int,
* boolean, ListCallback)} instead.
* @since 1.0
*/
DirEntry[] list(String url, Revision revision, boolean recurse)
throws ClientException;
/**
* Lists the directory entries of a url on the server.
* @param url the url to list
* @param revision the revision to list
* @param pegRevision the revision to interpret url
* @param recurse recurse into subdirectories
* @return Array of DirEntry objects.
* @deprecated Use {@link #list(String, Revision, Revision, int, int,
* boolean, ListCallback)} instead.
* @since 1.2
*/
DirEntry[] list(String url, Revision revision, Revision pegRevision,
boolean recurse)
throws ClientException;
/**
* Lists the directory entries of a url on the server.
* @param url the url to list
* @param revision the revision to list
* @param pegRevision the revision to interpret url
* @param depth the depth to recurse into subdirectories
* @param direntFields the fields to retrieve
* @param fetchLocks whether to fetch lock information
* @param callback the callback to receive the directory entries
* @since 1.5
*/
void list(String url, Revision revision, Revision pegRevision,
int depth, int direntFields, boolean fetchLocks,
ListCallback callback)
throws ClientException;
/**
* Sets the username used for authentication.
* @param username The username, ignored if the empty string. Set
* to the empty string to clear it.
* @throws IllegalArgumentException If <code>username</code> is
* <code>null</code>.
* @see #password(String)
* @since 1.0
*/
void username(String username);
/**
* Sets the password used for authentication.
* @param password The password, ignored if the empty string. Set
* to the empty string to clear it.
* @throws IllegalArgumentException If <code>password</code> is
* <code>null</code>.
* @see #username(String)
* @since 1.0
*/
void password(String password);
/**
* Register callback interface to supply username and password on demand.
* This callback can also be used to provide theequivalent of the
* <code>--no-auth-cache</code> and <code>--non-interactive</code> arguments
* accepted by the command-line client.
* @param prompt the callback interface
* @since 1.0
*/
void setPrompt(PromptUserPassword prompt);
/**
* Retrieve the log messages for an item
* @param path path or url to get the log message for.
* @param revisionStart first revision to show
* @param revisionEnd last revision to show
* @return array of LogMessages
* @deprecated Use {@link #logMessages(String, Revision, Revision, Revision,
* boolean, boolean, boolean, String[],
* long, LogMessageCallback)} instead.
* @since 1.0
*/
LogMessage[] logMessages(String path, Revision revisionStart,
Revision revisionEnd) throws ClientException;
/**
* Retrieve the log messages for an item
* @param path path or url to get the log message for.
* @param revisionStart first revision to show
* @param revisionEnd last revision to show
* @param stopOnCopy do not continue on copy operations
* @return array of LogMessages
* @deprecated Use {@link #logMessages(String, Revision, Revision, Revision,
* boolean, boolean, boolean, String[],
* long, LogMessageCallback)} instead.
* @since 1.0
*/
LogMessage[] logMessages(String path, Revision revisionStart,
Revision revisionEnd, boolean stopOnCopy)
throws ClientException;
/**
* Retrieve the log messages for an item
* @param path path or url to get the log message for.
* @param revisionStart first revision to show
* @param revisionEnd last revision to show
* @param stopOnCopy do not continue on copy operations
* @param discoverPath returns the paths of the changed items in the
* returned objects
* @return array of LogMessages
* @deprecated Use {@link #logMessages(String, Revision, Revision, Revision,
* boolean, boolean, boolean, String[],
* long, LogMessageCallback)} instead.
* @since 1.0
*/
LogMessage[] logMessages(String path, Revision revisionStart,
Revision revisionEnd, boolean stopOnCopy,
boolean discoverPath)
throws ClientException;
/**
* Retrieve the log messages for an item
* @param path path or url to get the log message for.
* @param revisionStart first revision to show
* @param revisionEnd last revision to show
* @param stopOnCopy do not continue on copy operations
* @param discoverPath returns the paths of the changed items in the
* returned objects
* @param limit limit the number of log messages (if 0 or less no
* limit)
* @return array of LogMessages
* @since 1.2
* @deprecated Use {@link #logMessages(String, Revision, Revision, Revision,
* boolean, boolean, boolean, String[],
* long, LogMessageCallback)} instead.
*/
LogMessage[] logMessages(String path, Revision revisionStart,
Revision revisionEnd, boolean stopOnCopy,
boolean discoverPath, long limit)
throws ClientException;
/**
* Retrieve the log messages for an item.
* @param path path or url to get the log message for.
* @param pegRevision revision to interpret path
* @param revisionStart first revision to show
* @param revisionEnd last revision to show
* @param stopOnCopy do not continue on copy operations
* @param discoverPath returns the paths of the changed items in the
* returned objects
* @param includeMergedRevisions include log messages for revisions which
* were merged.
* @param revProps the revprops to retrieve
* @param limit limit the number of log messages (if 0 or less no
* limit)
* @param callback the object to receive the log messages
* @since 1.5
* @deprecated Use {@link #logMessages(String, Revision, RevisionRange[],
* boolean, boolean, boolean, String[],
* long, LogMessageCallback)} instead.
*/
void logMessages(String path, Revision pegRevision,
Revision revisionStart,
Revision revisionEnd, boolean stopOnCopy,
boolean discoverPath, boolean includeMergedRevisions,
String[] revProps, long limit,
LogMessageCallback callback)
throws ClientException;
/**
* Retrieve the log messages for an item.
* @param path path or url to get the log message for.
* @param pegRevision revision to interpret path
* @param ranges an array of revision ranges to show
* @param stopOnCopy do not continue on copy operations
* @param discoverPath returns the paths of the changed items in the
* returned objects
* @param includeMergedRevisions include log messages for revisions which
* were merged.
* @param revProps the revprops to retrieve
* @param limit limit the number of log messages (if 0 or less no
* limit)
* @param callback the object to receive the log messages
* @since 1.6
*/
void logMessages(String path, Revision pegRevision,
RevisionRange[] ranges, boolean stopOnCopy,
boolean discoverPath, boolean includeMergedRevisions,
String[] revProps, long limit,
LogMessageCallback callback)
throws ClientException;
/**
* Executes a revision checkout.
* @param moduleName name of the module to checkout.
* @param destPath destination directory for checkout.
* @param revision the revision to checkout.
* @param recurse whether you want it to checkout files recursively.
* @throws ClientException
* @deprecated Use {@link #checkout(String, String, Revision, Revision,
* int, boolean, boolean)} instead.
* @since 1.0
*/
long checkout(String moduleName, String destPath, Revision revision,
boolean recurse)
throws ClientException;
/**
* Executes a revision checkout.
* @param moduleName name of the module to checkout.
* @param destPath destination directory for checkout.
* @param revision the revision to checkout.
* @param pegRevision the peg revision to interpret the path
* @param recurse whether you want it to checkout files recursively.
* @param ignoreExternals if externals are ignored during checkout
* @throws ClientException
* @deprecated Use {@link #checkout(String, String, Revision, Revision,
* int, boolean, boolean)} instead.
* @since 1.2
*/
long checkout(String moduleName, String destPath, Revision revision,
Revision pegRevision, boolean recurse,
boolean ignoreExternals) throws ClientException;
/**
* Executes a revision checkout.
* @param moduleName name of the module to checkout.
* @param destPath destination directory for checkout.
* @param revision the revision to checkout.
* @param pegRevision the peg revision to interpret the path
* @param depth how deep to checkout files recursively.
* @param ignoreExternals if externals are ignored during checkout
* @param allowUnverObstructions allow unversioned paths that obstruct adds
* @throws ClientException
* @since 1.5
*/
long checkout(String moduleName, String destPath, Revision revision,
Revision pegRevision, int depth,
boolean ignoreExternals,
boolean allowUnverObstructions) throws ClientException;
/**
* Sets the notification callback used to send processing information back
* to the calling program.
* @param notify listener that the SVN library should call on many
* file operations.
* @deprecated Use {@link #notification2(Notify2)} instead.
* @since 1.0
*/
void notification(Notify notify);
/**
* Sets the notification callback used to send processing information back
* to the calling program.
* @param notify listener that the SVN library should call on many
* file operations.
* @since 1.2
*/
void notification2(Notify2 notify);
/**
* Set the conflict resolution callback.
*
* @param listener The conflict resolution callback.
* @since 1.5
*/
void setConflictResolver(ConflictResolverCallback listener);
/**
* Set the progress callback.
*
* @param listener The progress callback.
* @since 1.5
*/
void setProgressListener(ProgressListener listener);
/**
* Sets the commit message handler. This allows more complex commit message
* with the list of the elements to be committed as input.
* @param messageHandler callback for entering commit messages
* if this is set the message parameter is ignored.
* @since 1.0
*/
void commitMessageHandler(CommitMessage messageHandler);
/**
* Sets a file for deletion.
* @param path path or url to be deleted
* @param message if path is a url, this will be the commit message.
* @param force delete even when there are local modifications.
* @throws ClientException
* @deprecated Use {@link #remove(String[], String, boolean, boolean)}
* instead.
* @since 1.0
*/
void remove(String[] path, String message, boolean force)
throws ClientException;
/**
* Sets a file for deletion.
* @param path path or url to be deleted
* @param message if path is a url, this will be the commit message.
* @param force delete even when there are local modifications.
* @param keepLocal only remove the paths from the repository.
* @param revpropTable A string-to-string mapping of revision properties
* to values which will be set if this operation
* results in a commit.
* @throws ClientException
* @since 1.5
*/
void remove(String[] path, String message, boolean force,
boolean keepLocal, Map revpropTable)
throws ClientException;
/**
* Reverts a file to a pristine state.
* @param path path of the file.
* @param recurse recurse into subdirectories
* @throws ClientException
* @deprecated Use {@link #revert(String, int)} instead.
* @since 1.0
*/
void revert(String path, boolean recurse) throws ClientException;
/**
* Reverts a file to a pristine state.
* @param path path of the file.
* @param depth the depth to recurse into subdirectories
* @param changelists changelists to filter by
* @throws ClientException
* @since 1.5
*/
void revert(String path, int depth, String[] changelists)
throws ClientException;
/**
* Adds a file to the repository.
* @param path path to be added.
* @param recurse recurse into subdirectories
* @throws ClientException
* @since 1.0
* @deprecated Use {@link #add(String, int, boolean, boolean, boolean)}
* instead.
*/
void add(String path, boolean recurse) throws ClientException;
/**
* Adds a file to the repository.
* @param path path to be added.
* @param recurse recurse into subdirectories
* @param force if adding a directory and recurse true and path is a
* directory, all not already managed files are added.
* @throws ClientException
* @since 1.2
* @deprecated Use {@link #add(String, int, boolean, boolean, boolean)}
* instead.
*/
void add(String path, boolean recurse, boolean force)
throws ClientException;
/**
* Adds a file to the repository.
* @param path path to be added.
* @param depth the depth to recurse into subdirectories
* @param force if adding a directory and recurse true and path is a
* directory, all not already managed files are added.
* @param noIgnores if false, don't add files or directories matching
* ignore patterns
* @param addParents add any intermediate parents to the working copy
* @throws ClientException
* @since 1.5
*/
void add(String path, int depth, boolean force, boolean noIgnores,
boolean addParents)
throws ClientException;
/**
* Updates the directory or file from repository
* @param path target file.
* @param revision the revision number to update.
* Revision.HEAD will update to the
* latest revision.
* @param recurse recursively update.
* @throws ClientException
* @deprecated Use {@link #update(String, Revision, int, boolean,
* boolean, boolean)} instead.
* @since 1.0
*/
long update(String path, Revision revision, boolean recurse)
throws ClientException;
/**
* Updates the directories or files from repository
* @param path array of target files.
* @param revision the revision number to update.
* Revision.HEAD will update to the
* latest revision.
* @param recurse recursively update.
* @param ignoreExternals if externals are ignored during update
* @throws ClientException
* @deprecated Use {@link #update(String[], Revision, int, boolean,
* boolean, boolean)} instead.
* @since 1.2
*/
long[] update(String[] path, Revision revision, boolean recurse,
boolean ignoreExternals) throws ClientException;
/**
* Updates the directory or file from repository
* @param path target file.
* @param revision the revision number to update.
* Revision.HEAD will update to the
* latest revision.
* @param depth the depth to recursively update.
* @param depthIsSticky if set, and depth is not {@link Depth#unknown},
* then also set the ambient depth value to depth.
* @param ignoreExternals if externals are ignored during update
* @param allowUnverObstructions allow unversioned paths that obstruct adds
* @throws ClientException
* @since 1.5
*/
long update(String path, Revision revision, int depth,
boolean depthIsSticky, boolean ignoreExternals,
boolean allowUnverObstructions)
throws ClientException;
/**
* Updates the directories or files from repository
* @param path array of target files.
* @param revision the revision number to update.
* Revision.HEAD will update to the
* latest revision.
* @param depth the depth to recursively update.
* @param depthIsSticky if set, and depth is not {@link Depth#unknown},
* then also set the ambient depth value to depth.
* @param ignoreExternals if externals are ignored during update
* @param allowUnverObstructions allow unversioned paths that obstruct adds
* @throws ClientException
* @since 1.5
*/
long[] update(String[] path, Revision revision, int depth,
boolean depthIsSticky, boolean ignoreExternals,
boolean allowUnverObstructions) throws ClientException;
/**
* Commits changes to the repository.
* @param path files to commit.
* @param message log message.
* @param recurse whether the operation should be done recursively.
* @return The new revision number created by the commit, or
* {@link Revision#SVN_INVALID_REVNUM} if the revision number is
* invalid.
* @throws ClientException
* @deprecated Use {@link #commit(String[], String, int, boolean, boolean,
* String[])} instead.
*/
long commit(String[] path, String message, boolean recurse)
throws ClientException;
/**
* Commits changes to the repository.
* @param path files to commit.
* @param message log message.
* @param recurse whether the operation should be done recursively.
* @param noUnlock do remove any locks
* @return The new revision number created by the commit, or
* {@link Revision#SVN_INVALID_REVNUM} if the revision number is
* invalid.
* @throws ClientException
* @deprecated Use {@link #commit(String[], String, int, boolean, boolean,
* String[])} instead.
* @since 1.2
*/
long commit(String[] path, String message, boolean recurse,
boolean noUnlock) throws ClientException;
/**
* Commits changes to the repository.
* @param path files to commit.
* @param message log message.
* @param depth how deep to recurse in subdirectories
* @param noUnlock do remove any locks
* @param keepChangelist keep changelist associations after the commit.
* @param changelists if non-null, filter paths using changelists
* @param revpropTable A string-to-string mapping of revision properties
* to values which will be set if this operation
* results in a commit.
* @return The new revision number created by the commit, or
* {@link Revision#SVN_INVALID_REVNUM} if the revision number is
* invalid.
* @throws ClientException
* @since 1.5
*/
long commit(String[] path, String message, int depth,
boolean noUnlock, boolean keepChangelist,
String[] changelists, Map revpropTable)
throws ClientException;
/**
* Copy versioned paths with the history preserved.
*
* @param sources A list of <code>CopySource</code> objects.
* @param destPath Destination path or URL.
* @param message Commit message. May be <code>null</code> if
* <code>destPath</code> is not a URL.
* @param copyAsChild Whether to copy <code>srcPaths</code> as
* children of <code>destPath</code>.
* @param makeParents Whether to create intermediate parents
* @param ignoreExternals Whether or not to process external definitions
* as part of this operation.
* @param revpropTable A string-to-string mapping of revision properties
* to values which will be set if this operation
* results in a commit.
* @throws ClientException If the copy operation fails.
* @since 1.7
*/
void copy(CopySource[] sources, String destPath, String message,
boolean copyAsChild, boolean makeParents,
boolean ignoreExternals, Map revpropTable)
throws ClientException;
/**
* Copy versioned paths with the history preserved.
*
* @param sources A list of <code>CopySource</code> objects.
* @param destPath Destination path or URL.
* @param message Commit message. May be <code>null</code> if
* <code>destPath</code> is not a URL.
* @param copyAsChild Whether to copy <code>srcPaths</code> as
* children of <code>destPath</code>.
* @param makeParents Whether to create intermediate parents
* @param revpropTable A string-to-string mapping of revision properties
* to values which will be set if this operation
* results in a commit.
* @throws ClientException If the copy operation fails.
* @since 1.5
* @deprecated Use {@link #copy(CopySource[], String, String, boolean,
* boolean, boolean, Map)} instead.
*/
void copy(CopySource[] sources, String destPath, String message,
boolean copyAsChild, boolean makeParents, Map revpropTable)
throws ClientException;
/**
* Copy versioned paths with the history preserved (with
* <code>copyAsChild</code> behavior).
*
* @param srcPath source path or url
* @param destPath destination path or url
* @param message commit message if destPath is a url
* @param revision source revision
* @throws ClientException
* @deprecated Use {@link #copy(CopySource[], String, String, boolean,
* boolean, boolean, Map)} instead.
*/
void copy(String srcPath, String destPath, String message,
Revision revision) throws ClientException;
/**
* Move or rename versioned paths.
*
* @param srcPaths Source paths or URLs.
* @param destPath Destination path or URL.
* @param message Commit message. May be <code>null</code> if
* <code>destPath</code> is not a URL.
* @param force Whether to perform the move even if local
* modifications exist.
* @param moveAsChild Whether to move <code>srcPaths</code> as
* children of <code>destPath</code>.
* @param makeParents Whether to create intermediate parents.
* @param revpropTable A string-to-string mapping of revision properties
* to values which will be set if this operation
* results in a commit.
* @throws ClientException If the move operation fails.
* @since 1.5
*/
void move(String[] srcPaths, String destPath, String message,
boolean force, boolean moveAsChild, boolean makeParents,
Map revpropTable)
throws ClientException;
/**
* @deprecated Use {@link #move(String[], String, String, boolean, boolean,
* boolean)} instead.
* @since 1.2
*/
void move(String srcPath, String destPath, String message,
Revision ignored, boolean force)
throws ClientException;
/**
* Move or rename versioned paths (with <code>moveAsChild</code>
* behavior).
*
* @param srcPath source path or url
* @param destPath destination path or url
* @param message commit message if destPath is a url
* @param force even with local modifications.
* @throws ClientException
* @deprecated Use {@link #move(String[], String, String, boolean, boolean,
* boolean)} instead.
* @since 1.2
*/
void move(String srcPath, String destPath, String message,
boolean force) throws ClientException;
/**
* Creates a directory directly in a repository or creates a
* directory on disk and schedules it for addition.
* @param path directories to be created
* @param message commit message to used if path contains urls
* @param makeParents Whether to create intermediate parents
* @param revpropTable A string-to-string mapping of revision properties
* to values which will be set if this operation
* results in a commit.
* @throws ClientException
* @since 1.5
*/
void mkdir(String[] path, String message, boolean makeParents,
Map revpropTable)
throws ClientException;
/**
* Creates a directory directly in a repository or creates a
* directory on disk and schedules it for addition.
* @param path directories to be created
* @param message commit message to used if path contains urls
* @throws ClientException
*/
void mkdir(String[] path, String message) throws ClientException;
/**
* Recursively cleans up a local directory, finishing any
* incomplete operations, removing lockfiles, etc.
* @param path a local directory.
* @throws ClientException
*/
void cleanup(String path) throws ClientException;
/**
* Resolves the <i>conflicted</i> state on a WC path (or tree).
* @param path The path to resolve.
* @param depth How deep to recurse into child paths.
* @param conflictResult Which version to choose in the event of a
* conflict.
* @throws SubversionException If an error occurs.
* @since 1.5
*/
void resolve(String path, int depth, int conflictResult)
throws SubversionException;
/**
* Removes the <i>conflicted</i> state on a WC path (or tree).
* @see #resolved(String, int, int)
* @deprecated Use {@link #resolved(String, int, int)} instead.
*/
void resolved(String path, boolean recurse) throws ClientException;
/**
* Exports the contents of either a subversion repository into a
* 'clean' directory (meaning a directory with no administrative
* directories).
* @param srcPath the url of the repository path to be exported
* @param destPath a destination path that must not already exist.
* @param revision the revsion to be exported
* @param force set if it is ok to overwrite local files
* @throws ClientException
* @deprecated Use {@link #doExport(String, String, Revision, Revision,
* boolean, boolean, int, String)} instead.
* @since 1.0
*/
long doExport(String srcPath, String destPath, Revision revision,
boolean force) throws ClientException;
/**
* Exports the contents of either a subversion repository into a
* 'clean' directory (meaning a directory with no administrative
* directories).
* @param srcPath the url of the repository path to be exported
* @param destPath a destination path that must not already exist.
* @param revision the revsion to be exported
* @param pegRevision the revision to interpret srcPath
* @param force set if it is ok to overwrite local files
* @param ignoreExternals ignore external during export
* @param recurse recurse to subdirectories
* @param nativeEOL which EOL characters to use during export
* @throws ClientException
* @deprecated Use {@link #doExport(String, String, Revision, Revision,
* boolean, boolean, int, String)} instead.
* @since 1.2
*/
long doExport(String srcPath, String destPath, Revision revision,
Revision pegRevision, boolean force, boolean ignoreExternals,
boolean recurse, String nativeEOL) throws ClientException;
/**
* Exports the contents of either a subversion repository into a
* 'clean' directory (meaning a directory with no administrative
* directories).
*
* @param srcPath the url of the repository path to be exported
* @param destPath a destination path that must not already exist.
* @param revision the revsion to be exported
* @param pegRevision the revision to interpret srcPath
* @param force set if it is ok to overwrite local files
* @param ignoreExternals ignore external during export
* @param depth how deep to recurse in subdirectories
* @param nativeEOL which EOL characters to use during export
* @throws ClientException
* @since 1.5
*/
long doExport(String srcPath, String destPath, Revision revision,
Revision pegRevision, boolean force, boolean ignoreExternals,
int depth, String nativeEOL)
throws ClientException;
/**
* Update local copy to mirror a new url.
* @param path the working copy path
* @param url the new url for the working copy
* @param revision the new base revision of working copy
* @param recurse traverse into subdirectories
* @throws ClientException
* @deprecated Use {@link #doSwitch(String, String, Revision, boolean)}
* instead.
* @since 1.0
*/
long doSwitch(String path, String url, Revision revision, boolean recurse)
throws ClientException;
/**
* Update local copy to mirror a new url.
* @param path the working copy path
* @param url the new url for the working copy
* @param revision the new base revision of working copy
* @param pegRevision the revision at which to interpret <code>path</code>
* @param depth how deep to traverse into subdirectories
* @param depthIsSticky if set, and depth is not {@link Depth#unknown},
* then also set the ambient depth value to depth.
* @param ignoreExternals whether to process externals definitions
* @param allowUnverObstructions allow unversioned paths that obstruct adds
* @throws ClientException
* @since 1.5
*/
long doSwitch(String path, String url, Revision revision,
Revision pegRevision, int depth, boolean depthIsSticky,
boolean ignoreExternals, boolean allowUnverObstructions)
throws ClientException;
/**
* Import a file or directory into a repository directory at
* head.
* @param path the local path
* @param url the target url
* @param message the log message.
* @param recurse traverse into subdirectories
* @throws ClientException
* @deprecated Use {@link #doImport(String, String, String, int, boolean,
* boolean)} instead.
* @since 1.0
*/
void doImport(String path, String url, String message, boolean recurse)
throws ClientException;
/**
* Import a file or directory into a repository directory at
* head.
* @param path the local path
* @param url the target url
* @param message the log message.
* @param depth depth to traverse into subdirectories
* @param noIgnore whether to add files matched by ignore patterns
* @param ignoreUnknownNodeTypes whether to ignore files which
* the node type is not known, just as pipes
* @param revpropTable A string-to-string mapping of revision properties
* to values which will be set if this operation
* results in a commit.
* @throws ClientException
*
* @since 1.5
*/
void doImport(String path, String url, String message, int depth,
boolean noIgnore, boolean ignoreUnknownNodeTypes,
Map revpropTable)
throws ClientException;
/**
* Return an ordered list of suggested merge source URLs.
* @param path The merge target path for which to suggest sources.
* @param pegRevision Peg revision used to interpret path.
* @return The list of URLs, empty if there are no suggestions.
* @throws ClientException If an error occurs.
* @since 1.5
*/
String[] suggestMergeSources(String path, Revision pegRevision)
throws SubversionException;
/**
* Merge changes from two paths into a new local path.
* @param path1 first path or url
* @param revision1 first revision
* @param path2 second path or url
* @param revision2 second revision
* @param localPath target local path
* @param force overwrite local changes
* @param recurse traverse into subdirectories
* @throws ClientException
* @deprecated Use {@link #merge(String, Revision, String, Revision,
* String, boolean, int, boolean, boolean,
* boolean)} instead.
* @since 1.0
*/
void merge(String path1, Revision revision1, String path2,
Revision revision2, String localPath, boolean force,
boolean recurse) throws ClientException;
/**
* Merge changes from two paths into a new local path.
* @param path1 first path or url
* @param revision1 first revision
* @param path2 second path or url
* @param revision2 second revision
* @param localPath target local path
* @param force overwrite local changes
* @param recurse traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param dryRun do not change anything
* @throws ClientException
* @deprecated Use {@link #merge(String, Revision, String, Revision,
* String, boolean, int, boolean, boolean,
* boolean)} instead.
* @since 1.2
*/
void merge(String path1, Revision revision1, String path2,
Revision revision2, String localPath, boolean force,
boolean recurse, boolean ignoreAncestry, boolean dryRun)
throws ClientException;
/**
* Merge changes from two paths into a new local path.
*
* @param path1 first path or url
* @param revision1 first revision
* @param path2 second path or url
* @param revision2 second revision
* @param localPath target local path
* @param force overwrite local changes
* @param depth how deep to traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param dryRun do not change anything
* @param recordOnly record mergeinfo but do not run merge
* @throws ClientException
* @since 1.5
*/
void merge(String path1, Revision revision1, String path2,
Revision revision2, String localPath, boolean force, int depth,
boolean ignoreAncestry, boolean dryRun, boolean recordOnly)
throws ClientException;
/**
* Merge changes from two paths into a new local path.
* @param path path or url
* @param pegRevision revision to interpret path
* @param revision1 first revision
* @param revision2 second revision
* @param localPath target local path
* @param force overwrite local changes
* @param recurse traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param dryRun do not change anything
* @throws ClientException
* @deprecated Use {@link #merge(String, Revision, RevisionRange[],
* String, boolean, int, boolean,
* boolean, boolean)} instead.
* @since 1.2
*/
void merge(String path, Revision pegRevision, Revision revision1,
Revision revision2, String localPath, boolean force,
boolean recurse, boolean ignoreAncestry, boolean dryRun)
throws ClientException;
/**
* Merge set of revisions into a new local path.
* @param path path or url
* @param pegRevision revision to interpret path
* @param revisions revisions to merge
* @param localPath target local path
* @param force overwrite local changes
* @param depth how deep to traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param dryRun do not change anything
* @param recordOnly record mergeinfo but do not run merge
* @throws ClientException
* @since 1.5
*/
void merge(String path, Revision pegRevision, RevisionRange[] revisions,
String localPath, boolean force, int depth,
boolean ignoreAncestry, boolean dryRun, boolean recordOnly)
throws ClientException;
/**
* Perform a reintegration merge of path into localPath.
* localPath must be a single-revision, infinite depth,
* pristine, unswitched working copy -- in other words, it must
* reflect a single revision tree, the "target". The mergeinfo on
* path must reflect that all of the target has been merged into it.
* Then this behaves like a merge from the target's URL to the
* localPath.
*
* The depth of the merge is always infinity.
* @param path path or url
* @param pegRevision revision to interpret path
* @param localPath target local path
* @param dryRun do not change anything
* @throws ClientException
* @since 1.5
*/
void mergeReintegrate(String path, Revision pegRevision,
String localPath, boolean dryRun)
throws ClientException;
/**
* Get mergeinfo for <code>path</code> at <code>pegRevision</code>.
* @param path WC path or URL.
* @param pegRevision peg revision at which to get the merge info for
* <code>path</code>.
* @return The merge history of <code>path</code>.
* @throws SubversionException
* @since 1.5
*/
Mergeinfo getMergeinfo(String path, Revision pegRevision)
throws SubversionException;
/**
* Retrieve either merged or eligible-to-be-merged revisions.
* @param kind kind of revisions to receive:
* See {@see org.apache.subversion.javahl.MergeinfoLogKind}.
* @param pathOrUrl target of merge
* @param pegRevision peg rev for pathOrUrl
* @param mergeSourceUrl the source of the merge
* @param srcPegRevision peg rev for mergeSourceUrl
* @param discoverChangedPaths return paths of changed items
* @param depth the depth to recurse to
* @param revProps the revprops to retrieve
* @param callback the object to receive the log messages
* @since 1.7
*/
void getMergeinfoLog(int kind, String pathOrUrl,
Revision pegRevision, String mergeSourceUrl,
Revision srcPegRevision, boolean discoverChangedPaths,
int depth, String[] revProps,
LogMessageCallback callback)
throws ClientException;
/**
* Retrieve either merged or eligible-to-be-merged revisions.
* @param kind kind of revisions to receive:
* See {@see org.apache.subversion.javahl.MergeinfoLogKind}.
* @param pathOrUrl target of merge
* @param pegRevision peg rev for pathOrUrl
* @param mergeSourceUrl the source of the merge
* @param srcPegRevision peg rev for mergeSourceUrl
* @param discoverChangedPaths return paths of changed items
* @param revProps the revprops to retrieve
* @param callback the object to receive the log messages
* @deprecated Use {@link #getMergeinfoLog(int, String, Revision, String,
* Revision, boolean, int,
* String[], LogMessageCallback)}
* @since 1.5
*/
void getMergeinfoLog(int kind, String pathOrUrl,
Revision pegRevision, String mergeSourceUrl,
Revision srcPegRevision, boolean discoverChangedPaths,
String[] revProps, LogMessageCallback callback)
throws ClientException;
/**
* Display the differences between two paths
* @param target1 first path or url
* @param revision1 first revision
* @param target2 second path or url
* @param revision2 second revision
* @param outFileName file name where difference are written
* @param recurse traverse into subdirectories
* @throws ClientException
* @deprecated Use {@link #diff(String, Revision, String, Revision,
* String, String, int, boolean, boolean,
* boolean)} instead.
* @since 1.0
*/
void diff(String target1, Revision revision1, String target2,
Revision revision2, String outFileName, boolean recurse)
throws ClientException;
/**
* Display the differences between two paths
* @param target1 first path or url
* @param revision1 first revision
* @param target2 second path or url
* @param revision2 second revision
* @param outFileName file name where difference are written
* @param recurse traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param noDiffDeleted no output on deleted files
* @param force diff even on binary files
* @throws ClientException
* @deprecated Use {@link #diff(String, Revision, String, Revision,
* String, String, int, boolean, boolean,
* boolean)} instead.
* @since 1.2
*/
void diff(String target1, Revision revision1, String target2,
Revision revision2, String outFileName, boolean recurse,
boolean ignoreAncestry, boolean noDiffDeleted, boolean force)
throws ClientException;
/**
* Display the differences between two paths
* @param target1 first path or url
* @param revision1 first revision
* @param target2 second path or url
* @param revision2 second revision
* @param relativeToDir index path is relative to this path
* @param outFileName file name where difference are written
* @param depth how deep to traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param noDiffDeleted no output on deleted files
* @param force diff even on binary files
* @param copiesAsAdds if set, copied files will be shown in their
* entirety, not as diffs from their sources
* @throws ClientException
* @since 1.7
*/
void diff(String target1, Revision revision1, String target2,
Revision revision2, String relativeToDir, String outFileName,
int depth, String[] changelists, boolean ignoreAncestry,
boolean noDiffDeleted, boolean force, boolean copiesAsAdds)
throws ClientException;
/**
* Display the differences between two paths
* @param target1 first path or url
* @param revision1 first revision
* @param target2 second path or url
* @param revision2 second revision
* @param relativeToDir index path is relative to this path
* @param outFileName file name where difference are written
* @param depth how deep to traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param noDiffDeleted no output on deleted files
* @param force diff even on binary files
* @throws ClientException
* @deprecated Use {@link #diff(String, Revision, String, Revision,
* String, String, int, boolean, boolean,
* boolean, boolean)} instead.
* @since 1.5
*/
void diff(String target1, Revision revision1, String target2,
Revision revision2, String relativeToDir, String outFileName,
int depth, String[] changelists, boolean ignoreAncestry,
boolean noDiffDeleted, boolean force)
throws ClientException;
/**
* Display the differences between two paths.
* @param target path or url
* @param pegRevision revision tointerpret target
* @param startRevision first Revision to compare
* @param endRevision second Revision to compare
* @param outFileName file name where difference are written
* @param recurse traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param noDiffDeleted no output on deleted files
* @param force diff even on binary files
* @throws ClientException
* @deprecated Use {@link #diff(String, Revision, Revision, Revision,
* String, String, int, boolean, boolean,
* boolean)} instead.
* @since 1.2
*/
void diff(String target, Revision pegRevision, Revision startRevision,
Revision endRevision, String outFileName, boolean recurse,
boolean ignoreAncestry, boolean noDiffDeleted, boolean force)
throws ClientException;
/**
* Display the differences between two paths.
* @param target path or url
* @param pegRevision revision tointerpret target
* @param startRevision first Revision to compare
* @param endRevision second Revision to compare
* @param relativeToDir index path is relative to this path
* @param outFileName file name where difference are written
* @param depth how deep to traverse into subdirectories
* @param changelists if non-null, filter paths using changelists
* @param ignoreAncestry ignore if files are not related
* @param noDiffDeleted no output on deleted files
* @param force diff even on binary files
* @param copiesAsAdds if set, copied files will be shown in their
* entirety, not as diffs from their sources
* @throws ClientException
* @since 1.7
*/
void diff(String target, Revision pegRevision, Revision startRevision,
Revision endRevision, String relativeToDir, String outFileName,
int depth, String[] changelists, boolean ignoreAncestry,
boolean noDiffDeleted, boolean force, boolean copiesAsAdds)
throws ClientException;
/**
* Display the differences between two paths.
* @param target path or url
* @param pegRevision revision tointerpret target
* @param startRevision first Revision to compare
* @param endRevision second Revision to compare
* @param relativeToDir index path is relative to this path
* @param outFileName file name where difference are written
* @param depth how deep to traverse into subdirectories
* @param changelists if non-null, filter paths using changelists
* @param ignoreAncestry ignore if files are not related
* @param noDiffDeleted no output on deleted files
* @param force diff even on binary files
* @throws ClientException
* @deprecated Use {@link #diff(String, Revision, Revision, Revision,
* String, String, int, boolean, boolean,
* boolean, boolean)} instead.
* @since 1.5
*/
void diff(String target, Revision pegRevision, Revision startRevision,
Revision endRevision, String relativeToDir, String outFileName,
int depth, String[] changelists, boolean ignoreAncestry,
boolean noDiffDeleted, boolean force)
throws ClientException;
/**
* Produce a diff summary which lists the items changed between
* path and revision pairs.
*
* @param target1 Path or URL.
* @param revision1 Revision of <code>target1</code>.
* @param target2 Path or URL.
* @param revision2 Revision of <code>target2</code>.
* @param depth how deep to recurse.
* @param changelists if non-null, filter paths using changelists
* @param ignoreAncestry Whether to ignore unrelated files during
* comparison. False positives may potentially be reported if
* this parameter <code>false</code>, since a file might have been
* modified between two revisions, but still have the same
* contents.
* @param receiver As each is difference is found, this callback
* is invoked with a description of the difference.
*
* @throws ClientException
* @since 1.5
*/
void diffSummarize(String target1, Revision revision1,
String target2, Revision revision2,
int depth, String[] changelists, boolean ignoreAncestry,
DiffSummaryReceiver receiver)
throws ClientException;
/**
* Produce a diff summary which lists the items changed between
* path and revision pairs.
*
* @param target Path or URL.
* @param pegRevision Revision at which to interpret
* <code>target</code>. If {@link RevisionKind#unspecified} or
* <code>null</code>, behave identically to {@link
* #diffSummarize(String, Revision, String, Revision, int,
* boolean, DiffSummaryReceiver)}, using <code>path</code> for
* both of that method's targets.
* @param startRevision Beginning of range for comparison of
* <code>target</code>.
* @param endRevision End of range for comparison of
* <code>target</code>.
* @param depth how deep to recurse.
* @param changelists if non-null, filter paths using changelists
* @param ignoreAncestry Whether to ignore unrelated files during
* comparison. False positives may potentially be reported if
* this parameter <code>false</code>, since a file might have been
* modified between two revisions, but still have the same
* contents.
* @param receiver As each is difference is found, this callback
* is invoked with a description of the difference.
*
* @throws ClientException
* @since 1.5
*/
void diffSummarize(String target, Revision pegRevision,
Revision startRevision, Revision endRevision,
int depth, String[] changelists, boolean ignoreAncestry,
DiffSummaryReceiver receiver)
throws ClientException;
/**
* Retrieves the properties of an item
* @param path the path of the item
* @return array of property objects
* @throws ClientException
* @deprecated Use {@link #properties(String, Revision, Revision,
* int, ProplistCallback)} instead.
* @since 1.0
*/
PropertyData[] properties(String path) throws ClientException;
/**
* Retrieves the properties of an item
* @param path the path of the item
* @param revision the revision of the item
* @return array of property objects
* @throws ClientException
* @deprecated Use {@link #properties(String, Revision, Revision,
* int, ProplistCallback)} instead.
* @since 1.2
*/
PropertyData[] properties(String path, Revision revision)
throws ClientException;
/**
* Retrieves the properties of an item
* @param path the path of the item
* @param revision the revision of the item
* @param pegRevision the revision to interpret path
* @return array of property objects
* @throws ClientException
* @deprecated Use {@link #properties(String, Revision, Revision,
* int, ProplistCallback)} instead.
* @since 1.2
*/
PropertyData[] properties(String path, Revision revision,
Revision pegRevision)
throws ClientException;
/**
* Retrieves the properties of an item
*
* @param path the path of the item
* @param revision the revision of the item
* @param pegRevision the revision to interpret path
* @param depth the depth to recurse into subdirectories
* @param changelists changelists to filter by
* @param callback the callback to use to return the properties
* @throws ClientException
* @since 1.5
*/
void properties(String path, Revision revision, Revision pegRevision,
int depth, String[] changelists, ProplistCallback callback)
throws ClientException;
/**
* Sets one property of an item with a String value
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param recurse set property also on the subdirectories
* @throws ClientException
* @deprecated Use {@link #propertySet(String, String, String, int,
* boolean)} instead.
* @since 1.0
*/
void propertySet(String path, String name, String value, boolean recurse)
throws ClientException;
/**
* Sets one property of an item with a String value
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param recurse set property also on the subdirectories
* @param force do not check if the value is valid
* @throws ClientException
* @deprecated Use {@link #propertySet(String, String, String, int,
* boolean)} instead.
* @since 1.2
*/
void propertySet(String path, String name, String value, boolean recurse,
boolean force)
throws ClientException;
/**
* Sets one property of an item with a byte array value
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param recurse set property also on the subdirectories
* @throws ClientException
* @deprecated Use {@link #propertySet(String, String, String, int,
* boolean)} instead.
* @since 1.0
*/
void propertySet(String path, String name, byte[] value, boolean recurse)
throws ClientException;
/**
* Sets one property of an item with a byte array value
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param recurse set property also on the subdirectories
* @param force do not check if the value is valid
* @throws ClientException
* @deprecated Use {@link #propertySet(String, String, String, int,
* boolean)} instead.
* @since 1.2
*/
void propertySet(String path, String name, byte[] value, boolean recurse,
boolean force)
throws ClientException;
/**
* Sets one property of an item with a String value
*
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param depth the depth to recurse into subdirectories
* @param changelists changelists to filter by
* @param force do not check if the value is valid
* @param revpropTable A string-to-string mapping of revision properties
* to values which will be set if this operation
* results in a commit.
* @throws ClientException
* @since 1.5
*/
void propertySet(String path, String name, String value, int depth,
String[] changelists, boolean force,
Map revpropTable)
throws ClientException;
/**
* Remove one property of an item.
* @param path path of the item
* @param name name of the property
* @param recurse remove the property also on subdirectories
* @throws ClientException
* @deprecated Use {@link #propertyRemove(String, String, int)} instead.
* @since 1.0
*/
void propertyRemove(String path, String name, boolean recurse)
throws ClientException;
/**
* Remove one property of an item.
* @param path path of the item
* @param name name of the property
* @param depth the depth to recurse into subdirectories
* @param changelists changelists to filter by
* @throws ClientException
* @since 1.5
*/
void propertyRemove(String path, String name, int depth,
String[] changelists)
throws ClientException;
/**
* Create and sets one property of an item with a String value
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param recurse set property also on the subdirectories
* @throws ClientException
* @deprecated Use {@link #propertyCreate(String, String, String, int,
* boolean)} instead.
* @since 1.0
*/
void propertyCreate(String path, String name, String value,
boolean recurse)
throws ClientException;
/**
* Create and sets one property of an item with a String value
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param recurse set property also on the subdirectories
* @param force do not check if the value is valid
* @throws ClientException
* @deprecated Use {@link #propertyCreate(String, String, String, int,
* boolean)} instead.
* @since 1.2
*/
void propertyCreate(String path, String name, String value,
boolean recurse, boolean force)
throws ClientException;
/**
* Create and sets one property of an item with a byte array value
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param recurse set property also on the subdirectories
* @throws ClientException
* @deprecated Use {@link #propertyCreate(String, String, String, int,
* boolean)} instead.
* @since 1.0
*/
void propertyCreate(String path, String name, byte[] value,
boolean recurse)
throws ClientException;
/**
* Create and sets one property of an item with a byte array value
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param recurse set property also on the subdirectories
* @param force do not check if the value is valid
* @throws ClientException
* @deprecated Use {@link #propertyCreate(String, String, String, int,
* boolean)} instead.
* @since 1.2
*/
void propertyCreate(String path, String name, byte[] value,
boolean recurse, boolean force)
throws ClientException;
/**
* Create and sets one property of an item with a byte array value
*
* @param path path of the item
* @param name name of the property
* @param value new value of the property
* @param depth depth to set property on the subdirectories
* @param changelists changelists to filter by
* @param force do not check if the value is valid
* @throws ClientException
* @since 1.5
*/
void propertyCreate(String path, String name, String value, int depth,
String[] changelists, boolean force)
throws ClientException;
/**
* Retrieve one revsision property of one item
* @param path path of the item
* @param name name of the property
* @param rev revision to retrieve
* @return the Property
* @throws ClientException
* @since 1.0
*/
PropertyData revProperty(String path, String name, Revision rev)
throws ClientException;
/**
* Retrieve all revsision properties of one item
* @param path path of the item
* @param rev revision to retrieve
* @return the Properties
* @throws ClientException
* @since 1.2
*/
PropertyData[] revProperties(String path, Revision rev)
throws ClientException;
/**
* set one revsision property of one item
* @param path path of the item
* @param name name of the property
* @param rev revision to retrieve
* @param value value of the property
* @param force use force to set
* @throws ClientException
* @since 1.2
*/
void setRevProperty(String path, String name, Revision rev, String value,
boolean force)
throws ClientException;
/**
* set one revsision property of one item
* @param path path of the item
* @param name name of the property
* @param rev revision to retrieve
* @param value value of the property
* @param originalValue the original value of the property.
* @param force use force to set
* @throws ClientException
* @since 1.6
*/
void setRevProperty(String path, String name, Revision rev, String value,
String originalValue, boolean force)
throws ClientException;
/**
* Retrieve one property of one item
* @param path path of the item
* @param name name of property
* @return the Property
* @throws ClientException
* @deprecated Use {@link #propertyGet(String, String, Revision)} instead.
* @since 1.0
*/
PropertyData propertyGet(String path, String name) throws ClientException;
/**
* Retrieve one property of one item
* @param path path of the item
* @param name name of property
* @param revision revision of the item
* @return the Property
* @throws ClientException
* @since 1.2
*/
PropertyData propertyGet(String path, String name, Revision revision)
throws ClientException;
/**
* Retrieve one property of one item
* @param path path of the item
* @param name name of property
* @param revision revision of the item
* @param pegRevision the revision to interpret path
* @return the Property
* @throws ClientException
* @since 1.2
*/
PropertyData propertyGet(String path, String name, Revision revision,
Revision pegRevision)
throws ClientException;
/**
* Retrieve the content of a file
* @param path the path of the file
* @param revision the revision to retrieve
* @return the content as byte array
* @throws ClientException
* @deprecated Use {@link #fileContent(String, Revision, Revision)}
* instead.
* @since 1.0
*/
byte[] fileContent(String path, Revision revision) throws ClientException;
/**
* Retrieve the content of a file
* @param path the path of the file
* @param revision the revision to retrieve
* @param pegRevision the revision to interpret path
* @return the content as byte array
* @throws ClientException
* @since 1.2
*/
byte[] fileContent(String path, Revision revision, Revision pegRevision)
throws ClientException;
/**
* Write the file's content to the specified output stream. If
* you need an InputStream, use a
* PipedInputStream/PipedOutputStream combination.
*
* @param path the path of the file
* @param revision the revision to retrieve
* @param pegRevision the revision at which to interpret the path
* @param stream the stream to write the file's content to
* @throws ClientException
* @see java.io.PipedOutputStream
* @see java.io.PipedInputStream
* @since 1.0
*/
void streamFileContent(String path, Revision revision, Revision pegRevision,
int bufferSize, OutputStream stream)
throws ClientException;
/**
* Rewrite the url's in the working copy
* @param from old url
* @param to new url
* @param path working copy path
* @param recurse recurse into subdirectories
* @throws ClientException
* @since 1.0
*/
void relocate(String from, String to, String path, boolean recurse)
throws ClientException;
/**
* Return for each line of the file, the author and the revision of the
* last together with the content.
* @deprecated
* @param path the path
* @param revisionStart the first revision to show
* @param revisionEnd the last revision to show
* @return the content together with author and revision of last change
* @throws ClientException
* @deprecated Use {@link #blame(String, Revision, Revision, Revision,
* boolean, boolean, BlameCallback2)}
* instead.
* @since 1.0
*/
byte[] blame(String path, Revision revisionStart, Revision revisionEnd)
throws ClientException;
/**
* Retrieve the content together with the author, the revision and the date
* of the last change of each line
* @param path the path
* @param revisionStart the first revision to show
* @param revisionEnd the last revision to show
* @param callback callback to receive the file content and the other
* information
* @throws ClientException
* @deprecated Use {@link #blame(String, Revision, Revision, Revision,
* boolean, boolean, BlameCallback2)}
* instead.
* @since 1.0
*/
void blame(String path, Revision revisionStart, Revision revisionEnd,
BlameCallback callback) throws ClientException;
/**
* Retrieve the content together with the author, the revision and the date
* of the last change of each line
* @param path the path
* @param pegRevision the revision to interpret the path
* @param revisionStart the first revision to show
* @param revisionEnd the last revision to show
* @param callback callback to receive the file content and the other
* information
* @throws ClientException
* @deprecated Use {@link #blame(String, Revision, Revision, Revision,
* boolean, boolean, BlameCallback2)}
* instead.
* @since 1.2
*/
void blame(String path, Revision pegRevision, Revision revisionStart,
Revision revisionEnd,
BlameCallback callback) throws ClientException;
/**
* Retrieve the content together with the author, the revision and the date
* of the last change of each line
* @param path the path
* @param pegRevision the revision to interpret the path
* @param revisionStart the first revision to show
* @param revisionEnd the last revision to show
* @param ignoreMimeType whether or not to ignore the mime-type
* @param includeMergedRevisions whether or not to include extra merge
* information
* @param callback callback to receive the file content and the other
* information
* @throws ClientException
* @deprecated Use {@link #blame(String, Revision, Revision, Revision,
* boolean, boolean, BlameCallback3)}
* instead.
* @since 1.5
*/
void blame(String path, Revision pegRevision, Revision revisionStart,
Revision revisionEnd, boolean ignoreMimeType,
boolean includeMergedRevisions,
BlameCallback2 callback) throws ClientException;
/**
* Retrieve the content together with the author, the revision and the date
* of the last change of each line
* @param path the path
* @param pegRevision the revision to interpret the path
* @param revisionStart the first revision to show
* @param revisionEnd the last revision to show
* @param ignoreMimeType whether or not to ignore the mime-type
* @param includeMergedRevisions whether or not to include extra merge
* information
* @param callback callback to receive the file content and the other
* information
* @throws ClientException
* @since 1.7
*/
void blame(String path, Revision pegRevision, Revision revisionStart,
Revision revisionEnd, boolean ignoreMimeType,
boolean includeMergedRevisions,
BlameCallback3 callback) throws ClientException;
/**
* Set directory for the configuration information, taking the
* usual steps to ensure that Subversion's config file templates
* exist in the specified location.. On Windows, setting a
* non-<code>null</code> value will override lookup of
* configuration in the registry.
* @param configDir Path of the directory, or <code>null</code>
* for the platform's default.
* @throws ClientException
* @since 1.0
*/
void setConfigDirectory(String configDir) throws ClientException;
/**
* Get the configuration directory
* @return the directory
* @throws ClientException
* @since 1.0
*/
String getConfigDirectory() throws ClientException;
/**
* cancel the active operation
* @throws ClientException
* @since 1.0
*/
void cancelOperation() throws ClientException;
/**
* Retrieves the working copy information for an item
* @param path path of the item
* @return the information object
* @throws ClientException
* @deprecated Use {@link #info2(String, Revision, Revision, int,
* InfoCallback)} instead.
* @since 1.0
*/
Info info(String path) throws ClientException;
/**
* Add paths to a changelist
* @param paths paths to add to the changelist
* @param changelist changelist name
* @param depth the depth to recurse
* @param changelists changelists to filter by
* @since 1.5
*/
void addToChangelist(String[] paths, String changelist, int depth,
String[] changelists)
throws ClientException;
/**
* Remove paths from a changelist
* @param paths paths to remove from the changelist
* @param depth the depth to recurse
* @param changelists changelists to filter by
* @since 1.5
*/
void removeFromChangelists(String[] paths, int depth, String[] changelists)
throws ClientException;
/**
* Recursively get the paths which belong to a changelist
* @param rootPath the wc path under which to check
* @param changelists the changelists to look under
* @param depth the depth to recurse
* @param callback the callback to return the changelists through
* @since 1.5
*/
void getChangelists(String rootPath, String[] changelists, int depth,
ChangelistCallback callback)
throws ClientException;
/**
* Lock a working copy item
* @param path path of the item
* @param comment
* @param force break an existing lock
* @throws ClientException
* @since 1.2
*/
void lock(String[] path, String comment, boolean force)
throws ClientException;
/**
* Unlock a working copy item
* @param path path of the item
* @param force break an existing lock
* @throws ClientException
* @since 1.2
*/
void unlock(String[] path, boolean force)
throws ClientException;
/**
* Retrieve information about repository or working copy items.
* @param pathOrUrl the path or the url of the item
* @param revision the revision of the item to return
* @param pegRevision the revision to interpret pathOrUrl
* @param recurse flag if to recurse, if the item is a directory
* @return the information objects
* @deprecated Use {@link #info2(String, Revision, Revision, int,
* InfoCallback)} instead.
* @since 1.2
*/
Info2[] info2(String pathOrUrl, Revision revision, Revision pegRevision,
boolean recurse)
throws ClientException;
/**
* Retrieve information about repository or working copy items.
* @param pathOrUrl the path or the url of the item
* @param revision the revision of the item to return
* @param pegRevision the revision to interpret pathOrUrl
* @param depth the depth to recurse
* @param changelists if non-null, filter paths using changelists
* @param callback a callback to receive the infos retrieved
* @since 1.5
*/
void info2(String pathOrUrl, Revision revision, Revision pegRevision,
int depth, String[] changelists, InfoCallback callback)
throws ClientException;
/**
* Produce a compact "version number" for a working copy
* @param path path of the working copy
* @param trailUrl to detect switches of the whole working copy
* @param lastChanged last changed rather than current revisions
* @return the compact "version number"
* @throws ClientException
* @since 1.2
*/
String getVersionInfo(String path, String trailUrl, boolean lastChanged)
throws ClientException;
/**
* Recursively upgrade a working copy to a new metadata storage format.
* @param path path of the working copy
* @throws ClientException
* @since 1.7
*/
void upgrade(String path)
throws ClientException;
}