public class SvnNgMergeDriver
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
private static class |
SvnNgMergeDriver.FindOperativeSubtreeRevisions |
protected static class |
SvnNgMergeDriver.MergeData |
protected class |
SvnNgMergeDriver.MergePath |
static class |
SvnNgMergeDriver.MergeSource |
private class |
SvnNgMergeDriver.NoopLogHandler |
static class |
SvnNgMergeDriver.NotifyBeginState |
static class |
SvnNgMergeDriver.ObstructionState |
private static class |
SvnNgMergeDriver.SingleFileMergeData |
| Modifier and Type | Field and Description |
|---|---|
(package private) java.io.File |
addedPath |
protected java.util.Collection<java.io.File> |
addedPaths |
private boolean |
addNecessiatedMerge |
protected java.util.Collection<java.io.File> |
conflictedPaths |
(package private) SVNWCContext |
context |
private int |
currentAncestorIndex |
(package private) java.lang.String |
diff3Cmd |
private boolean |
diffIgnoreAncestry |
(package private) SVNDiffOptions |
diffOptions |
(package private) boolean |
dryRun |
(package private) java.util.Collection<java.io.File> |
dryRunAdded |
(package private) java.util.Collection<java.io.File> |
dryRunDeletions |
(package private) boolean |
forceDelete |
(package private) boolean |
ignoreMergeInfo |
protected SVNMergeRangeList |
implicitSrcGap |
protected java.util.Collection<java.io.File> |
mergedPaths |
private boolean |
mergeinfoCapable |
(package private) SvnNgMergeDriver.MergeSource |
mergeSource |
private int |
notifications |
SvnNgMergeDriver.NotifyBeginState |
notifyBegin |
(package private) SvnMerge |
operation |
private int |
operativeNotifications |
private static java.util.Comparator<? super java.io.File> |
PATH_COMPARATOR |
(package private) java.util.Collection<java.io.File> |
pathsWithDeletedMergeInfo |
(package private) java.util.Collection<java.io.File> |
pathsWithNewMergeInfo |
(package private) boolean |
recordOnly |
(package private) boolean |
reintegrateMerge |
(package private) SVNRepository |
repos1 |
(package private) SVNRepository |
repos2 |
(package private) SvnNgRepositoryAccess |
repositoryAccess |
(package private) SVNURL |
reposRootUrl |
(package private) boolean |
sameRepos |
private boolean |
singleFileMerge |
protected java.util.Collection<java.io.File> |
skippedPaths |
(package private) boolean |
sourcesAncestral |
(package private) java.io.File |
targetAbsPath |
private boolean |
targetMissingChild |
protected java.util.Collection<java.io.File> |
treeConflictedPaths |
boolean |
useSleep |
| Constructor and Description |
|---|
SvnNgMergeDriver(SVNWCContext context,
SvnMerge operation,
SvnNgRepositoryAccess repositoryAccess,
SVNDiffOptions diffOptions) |
| Modifier and Type | Method and Description |
|---|---|
private void |
adjustDeletedSubTreeRanges(SvnNgMergeDriver.MergePath child,
SvnNgMergeDriver.MergePath parent,
long revision1,
long revision2,
SVNURL primaryURL,
SVNRepository repository) |
java.util.Map |
calculateImplicitMergeInfo(SVNRepository repos,
SVNURL url,
long[] targetRev,
long start,
long end) |
private boolean |
calculateMergeInheritance(SVNMergeRangeList rangeList,
java.io.File localAbsPath,
boolean wcPathIsMergeTarget,
boolean wcPathHasMissingChild,
SVNDepth depth) |
void |
calculateRemainingRanges(SvnNgMergeDriver.MergePath parent,
SvnNgMergeDriver.MergePath child,
SVNURL sourceRootURL,
SVNURL url1,
long revision1,
SVNURL url2,
long revision2,
java.util.Map targetMergeInfo,
SVNMergeRangeList implicitSrcGap,
boolean isSubtree,
boolean childInheritsImplicit,
SVNRepository repository) |
void |
checkCancelled() |
private void |
checkWcForObstruction(SvnNgMergeDriver.ObstructionState result,
java.io.File localAbsPath,
boolean noWcRootCheck) |
private java.util.List<SvnNgMergeDriver.MergeSource> |
combineRangeWithSegments(SVNMergeRange range,
SVNLocationSegment[] segments,
SVNURL sourceRootURL) |
protected SvnSingleRangeConflictReport |
doDirectoryMerge(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog,
SvnNgMergeDriver.MergeSource source,
java.io.File targetAbsPath,
SVNURL sourceRootUrl,
ISvnDiffCallback2 processor,
SVNDepth depth,
boolean squelchMergeinfoNotifications) |
private SvnSingleRangeConflictReport |
doFileMerge(java.io.File targetAbsPath,
java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog,
SvnNgMergeDriver.MergeSource source,
ISvnDiffCallback2 mergeProcessor,
boolean sourcesRelated,
boolean squelcheMergeInfoNotifications) |
protected SvnNgMergeDriver.MergeData |
doMerge(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog,
java.util.List<SvnNgMergeDriver.MergeSource> mergeSources,
java.io.File targetAbsPath,
SVNRepository sourceRepository,
boolean sourcesRelated,
boolean sameRepository,
boolean ignoreMergeInfo,
boolean diffIgnoreAncestry,
boolean forceDelete,
boolean dryRun,
boolean recordOnly,
java.util.Collection<java.io.File> recordOnlyPaths,
boolean reintegrateMerge,
boolean squelcheMergeInfoNotifications,
SVNDepth depth,
SVNDiffOptions diffOptions) |
protected SvnSingleRangeConflictReport |
doMergeInfoAwareDirectoryMerge(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog,
SvnNgMergeDriver.MergeSource source,
java.io.File targetPath,
SVNURL sourceRootUrl,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
SVNDepth depth,
boolean squelchMergeinfoNotifications,
ISvnDiffCallback2 processor) |
protected SvnSingleRangeConflictReport |
doMergeInfoUnawareDirectoryMerge(SvnNgMergeDriver.MergeSource source,
java.io.File targetPath,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
SVNDepth depth) |
private void |
driveMergeReportEditor(java.io.File targetAbsPath,
SvnNgMergeDriver.MergeSource source,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
ISvnDiffCallback2 processor,
SVNDepth depth) |
SvnNgRemoteMergeEditor |
driveMergeReportEditor(java.io.File targetWCPath,
SVNURL url1,
long revision1,
SVNURL url2,
long revision2,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
SVNDepth depth,
ISvnDiffCallback2 mergeCallback) |
private void |
ensureImplicitMergeinfo(SvnNgMergeDriver.MergePath parent,
SvnNgMergeDriver.MergePath child,
boolean childInheritsParent,
long revision1,
long revision2,
SVNRepository repository) |
protected SVNRepository |
ensureRepository(SVNRepository repository,
SVNURL url) |
protected static SVNURL |
ensureSessionURL(SVNRepository repository,
SVNURL url) |
void |
ensureWcIsSuitableForMerge(java.io.File targetAbsPath,
boolean allowMixedRevs,
boolean allowLocalMods,
boolean allowSwitchedSubtrees) |
private void |
filterMergedRevisions(SvnNgMergeDriver.MergePath parent,
SvnNgMergeDriver.MergePath child,
SVNRepository repository,
java.lang.String mergeInfoPath,
java.util.Map targetMergeInfo,
long rev1,
long rev2,
boolean childInheritsImplicit) |
private SVNMergeRangeList |
filterNaturalHistoryFromMergeInfo(java.lang.String srcPath,
java.util.Map<java.lang.String,SVNMergeRangeList> implicitMergeInfo,
SVNMergeRange requestedRange) |
protected void |
findGapsInMergeSourceHistory(long[] gap,
java.lang.String mergeSrcCanonPath,
SVNURL url1,
long rev1,
SVNURL url2,
long rev2,
SVNRepository repos) |
protected static SvnNgMergeDriver.MergePath |
findNearestAncestor(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
boolean pathIsAncestor,
java.io.File localAbsPath) |
protected static int |
findNearestAncestor(java.lang.Object[] childrenWithMergeInfoArray,
boolean pathIsOwnAncestor,
java.io.File path) |
static SvnNgMergeDriver.MergePath |
findNearestAncestorWithIntersectingRanges(long[] revisions,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
boolean pathIsOwnAncestor,
java.io.File localAbsPath) |
private void |
fixDeletedSubtreeRanges(SVNURL url1,
long revision1,
SVNURL url2,
long revision2,
SVNRepository repository,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
private void |
flagSubTreesNeedingMergeInfo(boolean operativeMerge,
SVNMergeRange mergeRange,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
java.io.File mergeInfoPath,
SVNDepth depth) |
private SvnNgMergeDriver.MergePath |
getChildWithMergeinfo(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
java.io.File path) |
protected java.util.Map<java.lang.String,SVNMergeRangeList>[] |
getFullMergeInfo(boolean getRecorded,
boolean getImplicit,
boolean[] inherited,
SVNMergeInfoInheritance inherit,
SVNRepository repos,
java.io.File target,
long start,
long end) |
private java.util.Map<java.io.File,java.lang.String> |
getInoperativeImmediateChildrent(java.lang.String mergeSourceReposAbsPath,
long oldestRev,
long youngestRev,
java.io.File targetAbsPath,
SVNRepository repos,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
private java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> |
getMergeInfoPaths(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
java.io.File targetAbsPath,
SVNDepth depth,
boolean dryRun,
boolean sameRepos) |
private long |
getMostInclusiveEndRevision(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
boolean isRollBack) |
private long |
getMostInclusiveStartRevision(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
boolean isRollBack) |
private java.util.Map<java.io.File,java.lang.String> |
getOperativeImmediateChildren(java.io.File mergeSourceFsPath,
long oldestRevision,
long youngestRevision,
java.io.File mergeTargetAbsPath,
SVNDepth depth,
SVNRepository repository) |
protected java.lang.String |
getPathRelativeToRoot(SVNURL url,
SVNURL reposRootURL,
SVNRepository repos) |
private java.util.TreeMap<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> |
getWcExplicitMergeInfoCatalog(java.io.File targetAbsPath,
SVNDepth depth) |
private void |
inheritImplicitMergeinfoFromParent(SvnNgMergeDriver.MergePath parent,
SvnNgMergeDriver.MergePath child,
long revision1,
long revision2,
SVNRepository repository) |
private void |
insertParentAndSiblingsOfAbsentDelSubtree(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
SvnNgMergeDriver.MergePath child,
SVNDepth depth) |
(package private) boolean |
isDryRunAddition(java.io.File path) |
(package private) boolean |
isDryRunDeletion(java.io.File path) |
protected boolean |
isHonorMergeInfo() |
private static boolean |
isOperativeNotification(SVNEvent event) |
private boolean |
isPathSubtree(java.io.File localAbsPath,
java.util.Collection<java.io.File> subtrees) |
boolean |
isRecordMergeInfo() |
private boolean |
isSubtree(java.io.File path,
java.util.Collection<java.io.File> paths) |
private boolean |
isSubtreeTouchedByMerge(java.io.File absPath) |
private SVNErrorMessage |
makeMergeConflictError(java.io.File targetPath,
SVNMergeRange range) |
static void |
makeMergeConflictError(SvnConflictReport report) |
SvnNgMergeDriver.MergeData |
mergeCousinsAndSupplementMergeInfo(java.io.File targetWCPath,
SVNRepository repository1,
SVNRepository repository2,
SVNURL url1,
long rev1,
SVNURL url2,
long rev2,
long youngestCommonRev,
SVNURL sourceReposRoot,
SVNURL wcReposRoot,
SVNDepth depth,
boolean ignoreMergeInfo,
boolean ignoreAncestry,
boolean forceDelete,
boolean recordOnly,
boolean dryRun) |
java.util.List<SvnNgMergeDriver.MergeSource> |
normalizeMergeSources(SvnTarget source,
SVNURL sourceURL,
SVNURL sourceRootURL,
SVNRevision pegRevision,
java.util.Collection<SVNRevisionRange> rangesToMerge,
SVNRepository repository) |
SvnNgMergeDriver.ObstructionState |
performObstructionCheck(java.io.File localAbsPath,
SVNNodeKind expectedKind) |
private void |
populateRemainingRanges(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
SVNURL sourceRootURL,
SVNURL url1,
long revision1,
SVNURL url2,
long revision2,
boolean honorMergeInfo,
SVNRepository repository,
java.lang.String parentMergeSrcCanonPath) |
private void |
processChildrenWithNewMergeInfo(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
private void |
recordMergeinfo(java.io.File localAbsPath,
java.util.Map<java.lang.String,SVNMergeRangeList> mergeinfo,
boolean notify) |
private void |
recordMergeInfoForAddedSubtrees(SVNMergeRange range,
java.lang.String mergeInfoPath,
SVNDepth depth,
boolean squelchMergeinfoNotifications,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
protected void |
recordMergeInfoForDirectoryMerge(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog,
SVNMergeRange mergeRange,
java.lang.String mergeInfoPath,
SVNDepth depth,
boolean squelchMergeinfoNotifications,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
private void |
recordSkips(java.lang.String mergeInfoPath,
SVNMergeRangeList childMergeRangelist,
boolean isRollBack) |
private void |
removeAbsentChildren(java.io.File targetWCPath,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
private void |
removeChildrenWithDeletedMergeInfo(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
private void |
removeFirstRangeFromRemainingRanges(long endRevision,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
private SVNMergeRangeList |
removeNoOpMergeRanges(SVNRepository repository,
SVNMergeRangeList ranges) |
private void |
removeNoOpSubtreeRanges(SVNURL url1,
long revision1,
SVNURL url2,
long revision2,
java.io.File targetAbsPath,
SVNRepository repository,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) |
private void |
removeSourceGap(SVNMergeRange range,
SVNMergeRangeList implicitSrcGap) |
private boolean |
resolveConflicts(java.util.Collection<java.io.File> conflictedPaths) |
private SvnNgMergeDriver.SingleFileMergeData |
singleFileMergeGetFile(SVNRepository repository,
SVNURL url,
long revision,
java.io.File wcTarget) |
private void |
sliceRemainingRanges(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
boolean isRollBack,
long endRevision) |
private void |
updateWCMergeInfo(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog,
java.io.File targetAbsPath,
java.lang.String reposRelPath,
java.util.Map<java.io.File,SVNMergeRangeList> merges,
boolean isRollBack) |
private static final java.util.Comparator<? super java.io.File> PATH_COMPARATOR
java.lang.String diff3Cmd
boolean forceDelete
public boolean useSleep
boolean dryRun
boolean recordOnly
boolean sourcesAncestral
boolean sameRepos
boolean ignoreMergeInfo
private boolean mergeinfoCapable
private boolean diffIgnoreAncestry
private boolean targetMissingChild
boolean reintegrateMerge
java.io.File targetAbsPath
java.io.File addedPath
SVNURL reposRootUrl
SvnNgMergeDriver.MergeSource mergeSource
protected SVNMergeRangeList implicitSrcGap
SVNWCContext context
private boolean addNecessiatedMerge
java.util.Collection<java.io.File> dryRunDeletions
java.util.Collection<java.io.File> dryRunAdded
private int operativeNotifications
private int notifications
protected java.util.Collection<java.io.File> addedPaths
protected java.util.Collection<java.io.File> mergedPaths
protected java.util.Collection<java.io.File> skippedPaths
protected java.util.Collection<java.io.File> treeConflictedPaths
protected java.util.Collection<java.io.File> conflictedPaths
java.util.Collection<java.io.File> pathsWithNewMergeInfo
java.util.Collection<java.io.File> pathsWithDeletedMergeInfo
SVNDiffOptions diffOptions
SVNRepository repos1
SVNRepository repos2
SvnMerge operation
SvnNgRepositoryAccess repositoryAccess
private int currentAncestorIndex
private boolean singleFileMerge
public SvnNgMergeDriver.NotifyBeginState notifyBegin
public SvnNgMergeDriver(SVNWCContext context, SvnMerge operation, SvnNgRepositoryAccess repositoryAccess, SVNDiffOptions diffOptions)
public static SvnNgMergeDriver.MergePath findNearestAncestorWithIntersectingRanges(long[] revisions, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, boolean pathIsOwnAncestor, java.io.File localAbsPath)
public static void makeMergeConflictError(SvnConflictReport report) throws SVNException
SVNExceptionpublic void ensureWcIsSuitableForMerge(java.io.File targetAbsPath,
boolean allowMixedRevs,
boolean allowLocalMods,
boolean allowSwitchedSubtrees)
throws SVNException
SVNExceptionpublic SvnNgMergeDriver.MergeData mergeCousinsAndSupplementMergeInfo(java.io.File targetWCPath, SVNRepository repository1, SVNRepository repository2, SVNURL url1, long rev1, SVNURL url2, long rev2, long youngestCommonRev, SVNURL sourceReposRoot, SVNURL wcReposRoot, SVNDepth depth, boolean ignoreMergeInfo, boolean ignoreAncestry, boolean forceDelete, boolean recordOnly, boolean dryRun) throws SVNException
SVNExceptionpublic java.util.List<SvnNgMergeDriver.MergeSource> normalizeMergeSources(SvnTarget source, SVNURL sourceURL, SVNURL sourceRootURL, SVNRevision pegRevision, java.util.Collection<SVNRevisionRange> rangesToMerge, SVNRepository repository) throws SVNException
SVNExceptionprivate java.util.List<SvnNgMergeDriver.MergeSource> combineRangeWithSegments(SVNMergeRange range, SVNLocationSegment[] segments, SVNURL sourceRootURL) throws SVNException
SVNExceptionprotected SvnNgMergeDriver.MergeData doMerge(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog, java.util.List<SvnNgMergeDriver.MergeSource> mergeSources, java.io.File targetAbsPath, SVNRepository sourceRepository, boolean sourcesRelated, boolean sameRepository, boolean ignoreMergeInfo, boolean diffIgnoreAncestry, boolean forceDelete, boolean dryRun, boolean recordOnly, java.util.Collection<java.io.File> recordOnlyPaths, boolean reintegrateMerge, boolean squelcheMergeInfoNotifications, SVNDepth depth, SVNDiffOptions diffOptions) throws SVNException
SVNExceptionprotected SvnSingleRangeConflictReport doMergeInfoAwareDirectoryMerge(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog, SvnNgMergeDriver.MergeSource source, java.io.File targetPath, SVNURL sourceRootUrl, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, SVNDepth depth, boolean squelchMergeinfoNotifications, ISvnDiffCallback2 processor) throws SVNException
SVNExceptionprotected SvnSingleRangeConflictReport doMergeInfoUnawareDirectoryMerge(SvnNgMergeDriver.MergeSource source, java.io.File targetPath, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, SVNDepth depth) throws SVNException
SVNExceptionprivate SvnSingleRangeConflictReport doFileMerge(java.io.File targetAbsPath, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog, SvnNgMergeDriver.MergeSource source, ISvnDiffCallback2 mergeProcessor, boolean sourcesRelated, boolean squelcheMergeInfoNotifications) throws SVNException
SVNExceptionprivate SvnNgMergeDriver.SingleFileMergeData singleFileMergeGetFile(SVNRepository repository, SVNURL url, long revision, java.io.File wcTarget) throws SVNException
SVNExceptionprotected SvnSingleRangeConflictReport doDirectoryMerge(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog, SvnNgMergeDriver.MergeSource source, java.io.File targetAbsPath, SVNURL sourceRootUrl, ISvnDiffCallback2 processor, SVNDepth depth, boolean squelchMergeinfoNotifications) throws SVNException
SVNExceptionprivate void removeNoOpSubtreeRanges(SVNURL url1, long revision1, SVNURL url2, long revision2, java.io.File targetAbsPath, SVNRepository repository, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) throws SVNException
SVNExceptionprivate void driveMergeReportEditor(java.io.File targetAbsPath,
SvnNgMergeDriver.MergeSource source,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
ISvnDiffCallback2 processor,
SVNDepth depth)
throws SVNException
SVNExceptionpublic SvnNgRemoteMergeEditor driveMergeReportEditor(java.io.File targetWCPath, SVNURL url1, long revision1, SVNURL url2, long revision2, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, SVNDepth depth, ISvnDiffCallback2 mergeCallback) throws SVNException
SVNExceptionprotected boolean isHonorMergeInfo()
public boolean isRecordMergeInfo()
protected static SVNURL ensureSessionURL(SVNRepository repository, SVNURL url) throws SVNException
SVNExceptionprotected static SvnNgMergeDriver.MergePath findNearestAncestor(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, boolean pathIsAncestor, java.io.File localAbsPath)
protected static int findNearestAncestor(java.lang.Object[] childrenWithMergeInfoArray,
boolean pathIsOwnAncestor,
java.io.File path)
private java.util.TreeMap<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> getWcExplicitMergeInfoCatalog(java.io.File targetAbsPath, SVNDepth depth) throws SVNException
SVNExceptionprivate java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> getMergeInfoPaths(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, java.io.File targetAbsPath, SVNDepth depth, boolean dryRun, boolean sameRepos) throws SVNException
SVNExceptionprivate void insertParentAndSiblingsOfAbsentDelSubtree(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, SvnNgMergeDriver.MergePath child, SVNDepth depth) throws SVNException
SVNExceptionprivate SvnNgMergeDriver.MergePath getChildWithMergeinfo(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, java.io.File path)
private void populateRemainingRanges(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, SVNURL sourceRootURL, SVNURL url1, long revision1, SVNURL url2, long revision2, boolean honorMergeInfo, SVNRepository repository, java.lang.String parentMergeSrcCanonPath) throws SVNException
SVNExceptionprotected java.util.Map<java.lang.String,SVNMergeRangeList>[] getFullMergeInfo(boolean getRecorded, boolean getImplicit, boolean[] inherited, SVNMergeInfoInheritance inherit, SVNRepository repos, java.io.File target, long start, long end) throws SVNException
SVNExceptionpublic java.util.Map calculateImplicitMergeInfo(SVNRepository repos, SVNURL url, long[] targetRev, long start, long end) throws SVNException
SVNExceptionprivate void inheritImplicitMergeinfoFromParent(SvnNgMergeDriver.MergePath parent, SvnNgMergeDriver.MergePath child, long revision1, long revision2, SVNRepository repository) throws SVNException
SVNExceptionprivate void ensureImplicitMergeinfo(SvnNgMergeDriver.MergePath parent, SvnNgMergeDriver.MergePath child, boolean childInheritsParent, long revision1, long revision2, SVNRepository repository) throws SVNException
SVNExceptionprotected void findGapsInMergeSourceHistory(long[] gap,
java.lang.String mergeSrcCanonPath,
SVNURL url1,
long rev1,
SVNURL url2,
long rev2,
SVNRepository repos)
throws SVNException
SVNExceptionpublic void calculateRemainingRanges(SvnNgMergeDriver.MergePath parent, SvnNgMergeDriver.MergePath child, SVNURL sourceRootURL, SVNURL url1, long revision1, SVNURL url2, long revision2, java.util.Map targetMergeInfo, SVNMergeRangeList implicitSrcGap, boolean isSubtree, boolean childInheritsImplicit, SVNRepository repository) throws SVNException
SVNExceptionprivate void adjustDeletedSubTreeRanges(SvnNgMergeDriver.MergePath child, SvnNgMergeDriver.MergePath parent, long revision1, long revision2, SVNURL primaryURL, SVNRepository repository) throws SVNException
SVNExceptionprivate void filterMergedRevisions(SvnNgMergeDriver.MergePath parent, SvnNgMergeDriver.MergePath child, SVNRepository repository, java.lang.String mergeInfoPath, java.util.Map targetMergeInfo, long rev1, long rev2, boolean childInheritsImplicit) throws SVNException
SVNExceptionprotected java.lang.String getPathRelativeToRoot(SVNURL url, SVNURL reposRootURL, SVNRepository repos) throws SVNException
SVNExceptionprivate void sliceRemainingRanges(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, boolean isRollBack, long endRevision)
private long getMostInclusiveEndRevision(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, boolean isRollBack)
private long getMostInclusiveStartRevision(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, boolean isRollBack)
private void processChildrenWithNewMergeInfo(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) throws SVNException
SVNExceptionprivate void removeChildrenWithDeletedMergeInfo(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo)
private void removeFirstRangeFromRemainingRanges(long endRevision,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo)
private SVNErrorMessage makeMergeConflictError(java.io.File targetPath, SVNMergeRange range)
private void removeAbsentChildren(java.io.File targetWCPath,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo)
protected void recordMergeInfoForDirectoryMerge(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog, SVNMergeRange mergeRange, java.lang.String mergeInfoPath, SVNDepth depth, boolean squelchMergeinfoNotifications, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) throws SVNException
SVNExceptionprivate void removeSourceGap(SVNMergeRange range, SVNMergeRangeList implicitSrcGap)
private void flagSubTreesNeedingMergeInfo(boolean operativeMerge,
SVNMergeRange mergeRange,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo,
java.io.File mergeInfoPath,
SVNDepth depth)
throws SVNException
SVNExceptionprivate boolean isPathSubtree(java.io.File localAbsPath,
java.util.Collection<java.io.File> subtrees)
private java.util.Map<java.io.File,java.lang.String> getOperativeImmediateChildren(java.io.File mergeSourceFsPath,
long oldestRevision,
long youngestRevision,
java.io.File mergeTargetAbsPath,
SVNDepth depth,
SVNRepository repository)
throws SVNException
SVNExceptionprivate boolean calculateMergeInheritance(SVNMergeRangeList rangeList, java.io.File localAbsPath, boolean wcPathIsMergeTarget, boolean wcPathHasMissingChild, SVNDepth depth) throws SVNException
SVNExceptionprivate void recordSkips(java.lang.String mergeInfoPath,
SVNMergeRangeList childMergeRangelist,
boolean isRollBack)
throws SVNException
SVNExceptionprivate void updateWCMergeInfo(java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> resultCatalog, java.io.File targetAbsPath, java.lang.String reposRelPath, java.util.Map<java.io.File,SVNMergeRangeList> merges, boolean isRollBack) throws SVNException
SVNExceptionprivate void recordMergeinfo(java.io.File localAbsPath,
java.util.Map<java.lang.String,SVNMergeRangeList> mergeinfo,
boolean notify)
throws SVNException
SVNExceptionprivate boolean isSubtreeTouchedByMerge(java.io.File absPath)
private boolean isSubtree(java.io.File path,
java.util.Collection<java.io.File> paths)
private SVNMergeRangeList filterNaturalHistoryFromMergeInfo(java.lang.String srcPath, java.util.Map<java.lang.String,SVNMergeRangeList> implicitMergeInfo, SVNMergeRange requestedRange)
private java.util.Map<java.io.File,java.lang.String> getInoperativeImmediateChildrent(java.lang.String mergeSourceReposAbsPath,
long oldestRev,
long youngestRev,
java.io.File targetAbsPath,
SVNRepository repos,
java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo)
throws SVNException
SVNExceptionprivate void recordMergeInfoForAddedSubtrees(SVNMergeRange range, java.lang.String mergeInfoPath, SVNDepth depth, boolean squelchMergeinfoNotifications, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) throws SVNException
SVNExceptionprivate SVNMergeRangeList removeNoOpMergeRanges(SVNRepository repository, SVNMergeRangeList ranges) throws SVNException
SVNExceptionprivate void fixDeletedSubtreeRanges(SVNURL url1, long revision1, SVNURL url2, long revision2, SVNRepository repository, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) throws SVNException
SVNExceptionpublic void checkCancelled()
throws SVNCancelException
SVNCancelExceptionprivate static boolean isOperativeNotification(SVNEvent event)
protected SVNRepository ensureRepository(SVNRepository repository, SVNURL url) throws SVNException
SVNExceptionpublic SvnNgMergeDriver.ObstructionState performObstructionCheck(java.io.File localAbsPath, SVNNodeKind expectedKind) throws SVNException
SVNExceptionboolean isDryRunAddition(java.io.File path)
boolean isDryRunDeletion(java.io.File path)
private void checkWcForObstruction(SvnNgMergeDriver.ObstructionState result, java.io.File localAbsPath, boolean noWcRootCheck) throws SVNException
SVNExceptionprivate boolean resolveConflicts(java.util.Collection<java.io.File> conflictedPaths)
throws SVNException
SVNException