}
protected Object[] calculateRemainingRangeList(File targetFile, SVNEntry entry, SVNURL sourceRoot, boolean[] indirect,
SVNURL url1, long revision1, SVNURL url2, long revision2,
SVNMergeRange range) throws SVNException {
SVNMergeRangeList remainingRangeList = null;
Map targetMergeInfo = null;
Map implicitMergeInfo = null;
boolean honorMergeInfo = isHonorMergeInfo();
if (honorMergeInfo) {
MergePath mergeTarget = new MergePath();
myRepository1.setLocation(entry.getSVNURL(), false);
Map[] fullMergeInfo = getFullMergeInfo(entry, indirect, SVNMergeInfoInheritance.INHERITED,
myRepository1, targetFile, Math.max(revision1, revision2), Math.min(revision1, revision2));
targetMergeInfo = fullMergeInfo[0];
implicitMergeInfo = fullMergeInfo[1];
myRepository1.setLocation(url1, false);
if (!myIsRecordOnly) {
calculateRemainingRanges(null, mergeTarget, sourceRoot, url1, revision1, url2, revision2,
targetMergeInfo, implicitMergeInfo, false, entry, myRepository1);
remainingRangeList = mergeTarget.myRemainingRanges;
}
}
if (!honorMergeInfo || myIsRecordOnly) {
remainingRangeList = new SVNMergeRangeList(range);
}
return new Object[]{remainingRangeList, targetMergeInfo, implicitMergeInfo};
}