org.tmatesoft.svn.core.wc2
Class SvnMerge

java.lang.Object
  extended by org.tmatesoft.svn.core.wc2.SvnOperation<java.lang.Void>
      extended by org.tmatesoft.svn.core.wc2.SvnMerge
All Implemented Interfaces:
ISvnOperationOptionsProvider

public class SvnMerge
extends SvnOperation<java.lang.Void>

Represents merge operation. There are three possible cases of merge operation. If revision ranges (ranges) are provided, merges the changes between source in its pegRevision, as it changed between the ranges in to the working copy path defined in operation's target. If revision ranges are not provided, merges changes from firstSource/its pegRevision to secondSource/its pegRevision into the working copy path defined in operation's target. The third case is if reintegrate is true performs a reintegration merge of source at its pegRevision into working copy target.

Note: this operation requires repository access.

SvnOperation.run() method throws org.tmatesoft.svn.core.SVNException in the following cases:


Constructor Summary
protected SvnMerge(SvnOperationFactory factory)
           
 
Method Summary
 void addRevisionRange(SvnRevisionRange range)
          Adds the revision range to collection of revision ranges for merging.
 SvnTarget getFirstSource()
          Returns first source for merge between two sources.
 SVNDiffOptions getMergeOptions()
          Returns the operation's merge options controlling white-spaces and eol-styles.
 java.util.Collection<SvnRevisionRange> getRevisionRanges()
          Returns the collection of SvnRevisionRange ranges.
 SvnTarget getSecondSource()
          Returns second source for merge between two sources.
 SvnTarget getSource()
          Returns source for merge between revisions and reintegrate merge.
 boolean isAllowMixedRevisions()
          Returns whether to allow merge target to have mixed revisions.
 boolean isChangesWorkingCopy()
          Gets whether the operation changes working copy
 boolean isDryRun()
          Returns whether the merge is carried out, and full notification feedback is provided, but the working copy is not modified.
 boolean isForce()
          Returns whether to fail if merge involves deleting locally modified or unversioned items.
 boolean isIgnoreAncestry()
          Returns whether or not items being diffed will be checked for relatedness first.
 boolean isRecordOnly()
          Returns whether the merge isn't actually performed, but the mergeinfo for the revisions which would've been merged is recorded in the working copy (and must be subsequently committed back to the repository).
 boolean isReintegrate()
          Returns whether it is reintegrate merge.
 void setAllowMixedRevisions(boolean allowMixedRevisions)
          Sets whether to allow merge target to have mixed revisions.
 void setDryRun(boolean dryRun)
          Sets whether the merge is carried out, and full notification feedback is provided, but the working copy is not modified.
 void setForce(boolean force)
          Sets whether to fail if merge involves deleting locally modified or unversioned items.
 void setIgnoreAncestry(boolean ignoreAncestry)
          Sets whether or not items being diffed will be checked for relatedness first.
 void setMergeOptions(SVNDiffOptions mergeOptions)
          Sets the operation's merge options controlling white-spaces and eol-styles.
 void setRecordOnly(boolean recordOnly)
          Sets whether the merge isn't actually performed, but the mergeinfo for the revisions which would've been merged is recorded in the working copy (and must be subsequently committed back to the repository).
 void setSource(SvnTarget source, boolean reintegrate)
          Sets source of the merge with reintegrate flag.
 void setSources(SvnTarget source1, SvnTarget source2)
          Sets first and seconds sources of the merge.
 
Methods inherited from class org.tmatesoft.svn.core.wc2.SvnOperation
addTarget, cancel, ensureArgumentsAreValid, ensureEnoughTargets, ensureHomohenousTargets, getApplicableChangelists, getAuthenticationManager, getCanceller, getDepth, getEventHandler, getFirstTarget, getMaximumTargetsCount, getMinimumTargetsCount, getOperationalWorkingCopy, getOperationFactory, getOptions, getRepositoryPool, getRevision, getTargets, hasFileTargets, hasLocalTargets, hasRemoteTargets, initDefaults, isCancelled, isSleepForTimestamp, isUseParentWcFormat, needsHomohenousTargets, run, setApplicalbeChangelists, setDepth, setRevision, setSingleTarget, setSleepForTimestamp
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SvnMerge

protected SvnMerge(SvnOperationFactory factory)
Method Detail

addRevisionRange

public void addRevisionRange(SvnRevisionRange range)
Adds the revision range to collection of revision ranges for merging.

Parameters:
range - revision range for merge
See Also:
getRevisionRanges()

getRevisionRanges

public java.util.Collection<SvnRevisionRange> getRevisionRanges()
Returns the collection of SvnRevisionRange ranges. These ranges may describe additive and/or subtractive merge ranges, they may overlap fully or partially, and/or they may partially or fully negate each other. This range list is not required to be sorted.

Returns:
revision ranges of the merge

setSource

public void setSource(SvnTarget source,
                      boolean reintegrate)
Sets source of the merge with reintegrate flag. This source is used in merge between revisions and reintegrate merge.

Parameters:
source - of merge
reintegrate - true if it is reintegrate merge, otherwise false
See Also:
isReintegrate()

setSources

public void setSources(SvnTarget source1,
                       SvnTarget source2)
Sets first and seconds sources of the merge. Those sources are used in merge between two sources.

Parameters:
source1 - first source
source2 - second source

getSource

public SvnTarget getSource()
Returns source for merge between revisions and reintegrate merge.

Returns:
merge source

getFirstSource

public SvnTarget getFirstSource()
Returns first source for merge between two sources.

Returns:
first source of merge

getSecondSource

public SvnTarget getSecondSource()
Returns second source for merge between two sources.

Returns:
first source of merge

isReintegrate

public boolean isReintegrate()
Returns whether it is reintegrate merge. This kind of merge should be used for back merging (for example, merging branches back to trunk, in which case merge is carried out by comparing the latest trunk tree with the latest branch tree; i.e. the resulting difference is exactly the branch changes which will go back to trunk).

Returns:
true if it is reintegrate merge, otherwise false

isIgnoreAncestry

public boolean isIgnoreAncestry()
Returns whether or not items being diffed will be checked for relatedness first. Unrelated items are typically transmitted to the editor as a deletion of one thing and the addition of another, but if this flag is false, unrelated items will be diffed as if they were related.

Returns:
true if ancestry should be ignored, otherwise false

setIgnoreAncestry

public void setIgnoreAncestry(boolean ignoreAncestry)
Sets whether or not items being diffed will be checked for relatedness first. Unrelated items are typically transmitted to the editor as a deletion of one thing and the addition of another, but if this flag is false, unrelated items will be diffed as if they were related.

Parameters:
ignoreAncestry - true if ancestry should be ignored, otherwise false

isForce

public boolean isForce()
Returns whether to fail if merge involves deleting locally modified or unversioned items. If force is true such items will be deleted, otherwise operation will fail.

Returns:
true if operation should be forced to run, otherwise false

setForce

public void setForce(boolean force)
Sets whether to fail if merge involves deleting locally modified or unversioned items. If force is true such items will be deleted, otherwise operation will fail.

Parameters:
force - true if operation should be forced to run, otherwise false

isRecordOnly

public boolean isRecordOnly()
Returns whether the merge isn't actually performed, but the mergeinfo for the revisions which would've been merged is recorded in the working copy (and must be subsequently committed back to the repository).

Returns:
true if operation should record only the result of merge - mergeinfo data, otherwise false

setRecordOnly

public void setRecordOnly(boolean recordOnly)
Sets whether the merge isn't actually performed, but the mergeinfo for the revisions which would've been merged is recorded in the working copy (and must be subsequently committed back to the repository).

Parameters:
recordOnly - true if operation should record only the result of merge - mergeinfo data, otherwise false

isDryRun

public boolean isDryRun()
Returns whether the merge is carried out, and full notification feedback is provided, but the working copy is not modified.

Returns:
true if the operation should only find out if a file can be merged successfully, otherwise false

setDryRun

public void setDryRun(boolean dryRun)
Sets whether the merge is carried out, and full notification feedback is provided, but the working copy is not modified.

Parameters:
dryRun - true if the operation should only find out if a file can be merged successfully, otherwise false

isAllowMixedRevisions

public boolean isAllowMixedRevisions()
Returns whether to allow merge target to have mixed revisions. If set to false and target has mixed revisions, SVNException is thrown with error codes SVNErrorCode.CLIENT_NOT_READY_TO_MERGE or SVNErrorCode.CLIENT_MERGE_UPDATE_REQUIRED.

Returns:
true if operation allows merging to mixed-revision working copy, otherwise false
Since:
1.7, SVN 1.7

setAllowMixedRevisions

public void setAllowMixedRevisions(boolean allowMixedRevisions)
Sets whether to allow merge target to have mixed revisions. If set to false and target has mixed revisions, SVNException is thrown with error codes SVNErrorCode.CLIENT_NOT_READY_TO_MERGE or SVNErrorCode.CLIENT_MERGE_UPDATE_REQUIRED.

Parameters:
allowMixedRevisions - true if operation allows merging to mixed-revision working copy, otherwise false
Since:
1.7, SVN 1.7

getMergeOptions

public SVNDiffOptions getMergeOptions()
Returns the operation's merge options controlling white-spaces and eol-styles.

Returns:
merge options of the operation

setMergeOptions

public void setMergeOptions(SVNDiffOptions mergeOptions)
Sets the operation's merge options controlling white-spaces and eol-styles.

Parameters:
mergeOptions - merge options of the operation

isChangesWorkingCopy

public boolean isChangesWorkingCopy()
Gets whether the operation changes working copy

Overrides:
isChangesWorkingCopy in class SvnOperation<java.lang.Void>
Returns:
true if the operation changes the working copy, otherwise false