private void fixDeletedSubtreeRanges(SVNURL url1, long revision1, SVNURL url2, long revision2, SVNRepository repository) throws SVNException {
boolean isRollback = revision2 < revision1;
SVNURL sourceRootUrl = repository.getRepositoryRoot(true);
Object[] array= myChildrenWithMergeInfo.toArray();
for (Iterator iterator = myChildrenWithMergeInfo.iterator(); iterator.hasNext(); ) {
MergePath child = (MergePath) iterator.next();
if (child.myIsAbsent) {
continue;
}
int parentIndex = findNearestAncestor(array, false, child.myPath);
MergePath parent = (MergePath) array[parentIndex];
if (isRollback) {
child.myRemainingRanges = child.myRemainingRanges.reverse();
parent.myRemainingRanges = parent.myRemainingRanges.reverse();
}
SVNMergeRangeList added = child.myRemainingRanges.diff(parent.myRemainingRanges, true);
SVNMergeRangeList deleted = parent.myRemainingRanges.diff(child.myRemainingRanges, true);
if (isRollback) {
child.myRemainingRanges = child.myRemainingRanges.reverse();
parent.myRemainingRanges = parent.myRemainingRanges.reverse();
}
if (!added.isEmpty() || !deleted.isEmpty()) {
String childReposSrcPath = SVNWCUtils.getPathAsChild(myTarget, child.myPath);
SVNURL childPrimarySrcUrl = revision1 < revision2 ? url2 : url1;
childPrimarySrcUrl = childPrimarySrcUrl.appendPath(childReposSrcPath, false);
adjustDeletedSubTreeRanges(child, parent, revision1, revision2, childPrimarySrcUrl, repository);
}
}
}