Package org.tmatesoft.svn.core.wc2
Class SvnMerge
- All Implemented Interfaces:
ISvnOperationOptionsProvider
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
.
-
Merge between sources/revision ranges, no reintegration.
If
depth
isSVNDepth.INFINITY
, merges fully recursively. Else ifSVNDepth.IMMEDIATES
, merges changes at most to files that are immediate children oftarget
and to directory properties oftarget
and its immediate subdirectory children. Else ifSVNDepth.FILES
, merges at most to immediate file children oftarget
and totarget
itself. Else ifSVNDepth.EMPTY
, applies changes only totarget
(i.e., directory property changes only). Ifdepth
isSVNDepth.UNKNOWN
, uses the depth oftarget
. UsesignoreAncestry
to control 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 isfalse
, unrelated items will be diffed as if they were related. Ifforce
is not set and the merge involves deleting locally modified or unversioned items the operation will fail. Ifforce
is set such items will be deleted. Merge optionsmergeOptions
is a collection ofSVNDiffOptions
, they are used to pass arguments to the merge processes (internal or external). If the caller'sISVNEventHandler
is notnull
, then it will be called once for each merged target. IfrecordOnly
istrue
, 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). IfdryRun
istrue
, the merge is carried out, and full notification feedback is provided, but the working copy is not modified.-
Merge between revision ranges.
Ranges
is a collection ofSvnRevisionRange
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. -
Merge between two sources.
FirstSource
andsecondSource
must both represent the same node kind - that is, iffirstSource
is a directory,secondSource
must also be, and iffirstSource
is a file,secondSource
must also be.
-
Merge between revision ranges.
-
Reintegration 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).
Destination
target
must be a single-revision,SVNDepth.INFINITY
, pristine, unswitched working copy - in other words, it must reflect a single revision tree, the "target". The mergeinfo onsource
must reflect that all of the target has been merged into it. The depth of the merge is alwaysSVNDepth.INFINITY
. Ifsource
'spegRevision
isnull
orinvalid
, then it defaults toSVNRevision.HEAD
.
SvnOperation.run()
method throws org.tmatesoft.svn.core.SVNException in
the following cases:
-
exception with
SVNErrorCode.CLIENT_BAD_REVISION
-
If any revision in the list of provided ranges is
invalid
exception with SVNErrorCode.CLIENT_BAD_REVISION
error code - if either firstSource
's pegRevision
or
firstSource
's pegRevision
is invalid
- Version:
- 1.7
- Author:
- TMate Software Ltd.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addRevisionRange
(SvnRevisionRange range) Adds the revision range to collection of revision ranges for merging.Returns first source for merge between two sources.Returns the operation's merge options controlling white-spaces and eol-styles.Returns the collection ofSvnRevisionRange
ranges.Returns second source for merge between two sources.Returns source for merge between revisions and reintegrate merge.boolean
Returns whether to allow merge target to have mixed revisions.boolean
Gets whether the operation changes working copyboolean
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
Returns whether or not items being diffed will be checked for relatedness first.boolean
boolean
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
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
setIgnoreMergeInfo
(boolean ignoreMergeInfo) 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
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, getSqliteJournalMode, getTargets, hasFileTargets, hasLocalTargets, hasRemoteTargets, initDefaults, isCancelled, isSleepForTimestamp, isUseParentWcFormat, needsHomohenousTargets, run, setApplicalbeChangelists, setDepth, setRevision, setSingleTarget, setSleepForTimestamp, setSqliteJournalMode
-
Field Details
-
EMULATE_AUTOMATIC_MERGE
public static final boolean EMULATE_AUTOMATIC_MERGE- See Also:
-
-
Constructor Details
-
SvnMerge
-
-
Method Details
-
addRevisionRange
Adds the revision range to collection of revision ranges for merging.- Parameters:
range
- revision range for merge- See Also:
-
getRevisionRanges
Returns the collection ofSvnRevisionRange
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
Sets source of the merge with reintegrate flag. Thissource
is used in merge between revisions and reintegrate merge.- Parameters:
source
- of mergereintegrate
-true
if it is reintegrate merge, otherwisefalse
- See Also:
-
setSources
Sets first and seconds sources of the merge. Those sources are used in merge between two sources.- Parameters:
source1
- first sourcesource2
- second source
-
getSource
Returns source for merge between revisions and reintegrate merge.- Returns:
- merge source
-
getFirstSource
Returns first source for merge between two sources.- Returns:
- first source of merge
-
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, otherwisefalse
-
isIgnoreMergeInfo
public boolean isIgnoreMergeInfo() -
setIgnoreMergeInfo
public void setIgnoreMergeInfo(boolean ignoreMergeInfo) -
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 isfalse
, unrelated items will be diffed as if they were related.- Returns:
true
if ancestry should be ignored, otherwisefalse
-
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 isfalse
, unrelated items will be diffed as if they were related.- Parameters:
ignoreAncestry
-true
if ancestry should be ignored, otherwisefalse
-
isForce
public boolean isForce()Returns whether to fail if merge involves deleting locally modified or unversioned items. Ifforce
istrue
such items will be deleted, otherwise operation will fail.- Returns:
true
if operation should be forced to run, otherwisefalse
-
setForce
public void setForce(boolean force) Sets whether to fail if merge involves deleting locally modified or unversioned items. Ifforce
istrue
such items will be deleted, otherwise operation will fail.- Parameters:
force
-true
if operation should be forced to run, otherwisefalse
-
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, otherwisefalse
-
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, otherwisefalse
-
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, otherwisefalse
-
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, otherwisefalse
-
isAllowMixedRevisions
public boolean isAllowMixedRevisions()Returns whether to allow merge target to have mixed revisions. If set tofalse
and target has mixed revisions,SVNException
is thrown with error codesSVNErrorCode.CLIENT_NOT_READY_TO_MERGE
orSVNErrorCode.CLIENT_MERGE_UPDATE_REQUIRED
.- Returns:
true
if operation allows merging to mixed-revision working copy, otherwisefalse
- Since:
- 1.7, SVN 1.7
-
setAllowMixedRevisions
public void setAllowMixedRevisions(boolean allowMixedRevisions) Sets whether to allow merge target to have mixed revisions. If set tofalse
and target has mixed revisions,SVNException
is thrown with error codesSVNErrorCode.CLIENT_NOT_READY_TO_MERGE
orSVNErrorCode.CLIENT_MERGE_UPDATE_REQUIRED
.- Parameters:
allowMixedRevisions
-true
if operation allows merging to mixed-revision working copy, otherwisefalse
- Since:
- 1.7, SVN 1.7
-
getMergeOptions
Returns the operation's merge options controlling white-spaces and eol-styles.- Returns:
- merge options of the operation
-
setMergeOptions
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 classSvnOperation<Void>
- Returns:
true
if the operation changes the working copy, otherwisefalse
-