protected SVNMergeRangeList calculateRemainingRanges(File file, SVNURL sourceURL, SVNURL[] mergeSources) throws SVNException {
if (skipExtendedMerge()) {
return null;
}
SVNEntry entry = myWCAccess.getEntry(file, false);
if (entry == null) {
return null;
}
SVNMergeRangeList remainingRangeList = null;
if (isHonorMergeInfo()) {
MergePath mergeTarget = new MergePath();
Map targetMergeInfo;
Map implicitMergeInfo;
SVNRepository repository = getRepository(entry.getSVNURL());
SVNURL sourceRoot = repository.getRepositoryRoot(true);
boolean[] indirect = {false};
Map[] fullMergeInfo = getFullMergeInfo(entry, indirect, SVNMergeInfoInheritance.INHERITED,
repository, file, Math.max(myRevision1, myRevision2), Math.min(myRevision1, myRevision2));
targetMergeInfo = fullMergeInfo[0];
implicitMergeInfo = fullMergeInfo[1];
mergeSources = getMergeSources(sourceURL, mergeSources);
SVNURL url1 = mergeSources[0];
SVNURL url2 = mergeSources[1];
calculateRemainingRanges(null, mergeTarget, sourceRoot, url1, myRevision1, url2, myRevision2,
targetMergeInfo, implicitMergeInfo, false, entry, repository);
remainingRangeList = mergeTarget.myRemainingRanges;
}
return remainingRangeList;
}