Class SvnRemoteCopy

All Implemented Interfaces:
ISvnObjectReceiver<SVNCommitInfo>, ISvnOperationOptionsProvider

public class SvnRemoteCopy extends AbstractSvnCommit
Represents copy to repository operation. Copies each source in sources to operation's target destination. Target should represent repository URL.

If multiple sources are given, target must be a directory, and sources will be copied as children of target.

Each src in sources must be files or directories under version control, or URLs of a versioned item in the repository. If sources has multiple items, they must be all repository URLs or all working copy paths.

The parent of target must already exist.

If sources has only one item, attempts to copy it to target. If failWhenDstExists is false and target already exists, attempts to copy the item as a child of target If failWhenDstExists is true and target already exists, throws an SVNException with the SVNErrorCode.FS_ALREADY_EXISTS error code.

If sources has multiple items, and failWhenDstExists is false, all sources are copied as children of target. If any child of target already exists with the same name any item in sources, throws an SVNException with the SVNErrorCode.FS_ALREADY_EXISTS error code.

If sources has multiple items, and failWhenDstExists is true, throws an SVNException with the SVNErrorCode.CLIENT_MULTIPLE_SOURCES_DISALLOWED.

Authentication manager (whether provided directly through the appropriate constructor or in an ISVNRepositoryPool instance) and commit handler are used to immediately attempt to commit the copy action in the repository.

If the caller's ISVNEventHandler is non-null, invokes it for each item added at the new location.

When performing a wc-to-url copy (tagging|branching from a working copy) it's possible to fix revisions of external working copies (if any) which are located within the working copy being copied. For example, imagine you have a working copy and on one of its subdirectories you set an "svn:externals" property which does not contain a revision number. Suppose you have made a tag from your working copy and in some period of time a user checks out that tag. It could have happened that the external project has evolved since the tag creation moment and the tag version is no more compatible with it. So, the user has a broken project since it will not compile because of the API incompatibility between the two versions of the external project: the HEAD one and the one existed in the moment of the tag creation. That is why it appears useful to fix externals revisions during a wc-to-url copy. To enable externals revision fixing a user should implement ISVNExternalsHandler. The user's implementation ISVNExternalsHandler.handleExternal(File,SVNURL,SVNRevision,SVNRevision,String,SVNRevision) method will be called on every external that will be met in the working copy. If the user's implementation returns non-null external revision, it's compared with the revisions fetched from the external definition. If they are different, the user's revision will be written in the external definition of the tag. Otherwise if the returned revision is equal to the revision from the external definition or if the user's implementation returns null for that external, it will be skipped (i.e. left as is, unprocessed).

Note: this routine requires repository access. run() returns SVNCommitInfo commit information information about the new committed revision.

Version:
1.7
Author:
TMate Software Ltd.
  • Constructor Details

  • Method Details

    • isMove

      public boolean isMove()
      Gets whether to do copy as move operation (delete, then add with history).
      Returns:
      true if move operation should be done, otherwise false
    • setMove

      public void setMove(boolean move)
      Sets whether to do copy as move operation (delete, then add with history).
      Parameters:
      move - true if move operation should be done, otherwise false
    • isMakeParents

      public boolean isMakeParents()
      Gets whether to make parent folders if don't exist.
      Returns:
      true if non-existent parent directories should be created, otherwise false
    • setMakeParents

      public void setMakeParents(boolean makeParents)
      Sets whether to make parent folders if don't exist.
      Parameters:
      makeParents - true if non-existent parent directories should be created, otherwise false
    • isDisableLocalModifications

      public boolean isDisableLocalModifications()
      Sets whether to disable local modifications.
      Returns:
      true if local modifications are disabled, otherwise false
      See Also:
    • setDisableLocalModifications

      public void setDisableLocalModifications(boolean disableLocalModifications)
      Sets whether to disable local modifications. If true and any local modification is found, run() method throws SVNException exception with SVNErrorCode.ILLEGAL_TARGET code.
      Parameters:
      disableLocalModifications - true if local modifications are disabled, otherwise false
    • getSources

      public Collection<SvnCopySource> getSources()
      Returns all operation's sources.
      Returns:
      sources of the operation
      See Also:
    • addCopySource

      public void addCopySource(SvnCopySource source)
      And one source to the operation's sources.
      Parameters:
      source - source of the operation
      See Also:
    • isFailWhenDstExists

      public boolean isFailWhenDstExists()
      Gets whether to fail if target already exists.
      Returns:
      true if fail when target already exists, otherwise false
      See Also:
    • setFailWhenDstExists

      public void setFailWhenDstExists(boolean failWhenDstExists)
      Sets whether to fail if target already exists.
      Parameters:
      failWhenDstExists - true if fail when target already exists, otherwise false
      See Also:
    • run

      public SVNCommitInfo run() throws SVNException
      Runs copy operation.
      Overrides:
      run in class SvnOperation<SVNCommitInfo>
      Returns:
      SVNCommitInfo commit information information about the new committed revision.
      Throws:
      SVNException
    • getExternalsHandler

      public ISvnExternalsHandler getExternalsHandler()
      Gets operation's externals handler.
      Returns:
      externals handler of the operation
      See Also:
    • setExternalsHandler

      public void setExternalsHandler(ISvnExternalsHandler externalsHandler)
      Sets operation's externals handler.
      Parameters:
      externalsHandler - externals handler of the operation
      See Also:
    • getCommitParameters

      public ISvnCommitParameters getCommitParameters()
      Returns operation's parameters of the commit. If no user parameters were previously specified, once creates and returns default ones.
      Returns:
      commit parameters of the operation
      See Also:
    • setCommitParameters

      public void setCommitParameters(ISvnCommitParameters commitParameters)
      Sets operation's parameters of the commit. When no parameters are set defaultones are used.
      Parameters:
      commitParameters - commit parameters of the operation
      See Also:
    • isPinExternals

      public boolean isPinExternals()
    • setPinExternals

      public void setPinExternals(boolean pinExternals)
    • getExternalsToPin

      public Map<SvnTarget,List<org.tmatesoft.svn.core.internal.wc.SVNExternal>> getExternalsToPin()
    • setExternalsToPin

      public void setExternalsToPin(Map<SvnTarget,List<org.tmatesoft.svn.core.internal.wc.SVNExternal>> externalsToPin)
    • isChangesWorkingCopy

      public boolean isChangesWorkingCopy()
      Gets whether the operation changes working copy
      Overrides:
      isChangesWorkingCopy in class SvnOperation<SVNCommitInfo>
      Returns:
      true if the operation changes the working copy, otherwise false
    • getOperationalWorkingCopy

      protected File getOperationalWorkingCopy()
      Overrides:
      getOperationalWorkingCopy in class SvnOperation<SVNCommitInfo>