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
SVNException
public void ensureWcIsSuitableForMerge(java.io.File targetAbsPath, boolean allowMixedRevs, boolean allowLocalMods, boolean allowSwitchedSubtrees) throws SVNException
SVNException
public 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
SVNException
public java.util.List<SvnNgMergeDriver.MergeSource> normalizeMergeSources(SvnTarget source, SVNURL sourceURL, SVNURL sourceRootURL, SVNRevision pegRevision, java.util.Collection<SVNRevisionRange> rangesToMerge, SVNRepository repository) throws SVNException
SVNException
private java.util.List<SvnNgMergeDriver.MergeSource> combineRangeWithSegments(SVNMergeRange range, SVNLocationSegment[] segments, SVNURL sourceRootURL) throws SVNException
SVNException
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) throws SVNException
SVNException
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) throws SVNException
SVNException
protected SvnSingleRangeConflictReport doMergeInfoUnawareDirectoryMerge(SvnNgMergeDriver.MergeSource source, java.io.File targetPath, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, SVNDepth depth) throws SVNException
SVNException
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) throws SVNException
SVNException
private SvnNgMergeDriver.SingleFileMergeData singleFileMergeGetFile(SVNRepository repository, SVNURL url, long revision, java.io.File wcTarget) throws SVNException
SVNException
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) throws SVNException
SVNException
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) throws SVNException
SVNException
private void driveMergeReportEditor(java.io.File targetAbsPath, SvnNgMergeDriver.MergeSource source, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, ISvnDiffCallback2 processor, SVNDepth depth) throws SVNException
SVNException
public 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
SVNException
protected boolean isHonorMergeInfo()
public boolean isRecordMergeInfo()
protected static SVNURL ensureSessionURL(SVNRepository repository, SVNURL url) throws SVNException
SVNException
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)
private java.util.TreeMap<java.io.File,java.util.Map<java.lang.String,SVNMergeRangeList>> getWcExplicitMergeInfoCatalog(java.io.File targetAbsPath, SVNDepth depth) throws SVNException
SVNException
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) throws SVNException
SVNException
private void insertParentAndSiblingsOfAbsentDelSubtree(java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo, SvnNgMergeDriver.MergePath child, SVNDepth depth) throws SVNException
SVNException
private 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
SVNException
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) throws SVNException
SVNException
public java.util.Map calculateImplicitMergeInfo(SVNRepository repos, SVNURL url, long[] targetRev, long start, long end) throws SVNException
SVNException
private void inheritImplicitMergeinfoFromParent(SvnNgMergeDriver.MergePath parent, SvnNgMergeDriver.MergePath child, long revision1, long revision2, SVNRepository repository) throws SVNException
SVNException
private void ensureImplicitMergeinfo(SvnNgMergeDriver.MergePath parent, SvnNgMergeDriver.MergePath child, boolean childInheritsParent, long revision1, long revision2, SVNRepository repository) throws SVNException
SVNException
protected void findGapsInMergeSourceHistory(long[] gap, java.lang.String mergeSrcCanonPath, SVNURL url1, long rev1, SVNURL url2, long rev2, SVNRepository repos) throws SVNException
SVNException
public 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
SVNException
private void adjustDeletedSubTreeRanges(SvnNgMergeDriver.MergePath child, SvnNgMergeDriver.MergePath parent, long revision1, long revision2, SVNURL primaryURL, SVNRepository repository) throws SVNException
SVNException
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) throws SVNException
SVNException
protected java.lang.String getPathRelativeToRoot(SVNURL url, SVNURL reposRootURL, SVNRepository repos) throws SVNException
SVNException
private 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
SVNException
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 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
SVNException
private 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
SVNException
private 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
SVNException
private boolean calculateMergeInheritance(SVNMergeRangeList rangeList, java.io.File localAbsPath, boolean wcPathIsMergeTarget, boolean wcPathHasMissingChild, SVNDepth depth) throws SVNException
SVNException
private void recordSkips(java.lang.String mergeInfoPath, SVNMergeRangeList childMergeRangelist, boolean isRollBack) throws SVNException
SVNException
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) throws SVNException
SVNException
private void recordMergeinfo(java.io.File localAbsPath, java.util.Map<java.lang.String,SVNMergeRangeList> mergeinfo, boolean notify) throws SVNException
SVNException
private 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
SVNException
private void recordMergeInfoForAddedSubtrees(SVNMergeRange range, java.lang.String mergeInfoPath, SVNDepth depth, boolean squelchMergeinfoNotifications, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) throws SVNException
SVNException
private SVNMergeRangeList removeNoOpMergeRanges(SVNRepository repository, SVNMergeRangeList ranges) throws SVNException
SVNException
private void fixDeletedSubtreeRanges(SVNURL url1, long revision1, SVNURL url2, long revision2, SVNRepository repository, java.util.Map<java.io.File,SvnNgMergeDriver.MergePath> childrenWithMergeInfo) throws SVNException
SVNException
public void checkCancelled() throws SVNCancelException
SVNCancelException
private static boolean isOperativeNotification(SVNEvent event)
protected SVNRepository ensureRepository(SVNRepository repository, SVNURL url) throws SVNException
SVNException
public SvnNgMergeDriver.ObstructionState performObstructionCheck(java.io.File localAbsPath, SVNNodeKind expectedKind) throws SVNException
SVNException
boolean 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
SVNException
private boolean resolveConflicts(java.util.Collection<java.io.File> conflictedPaths) throws SVNException
SVNException