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); } } }
MergePath parent = (MergePath) array[parentIndex]; if (isRollback) { child.remainingRanges = child.remainingRanges.reverse(); parent.remainingRanges = parent.remainingRanges.reverse(); child.remainingRanges = child.remainingRanges.reverse(); parent.remainingRanges = parent.remainingRanges.reverse();
ranges = ranges.reverse(); rangeList = rangeList.diff(ranges, false); } else {
ranges = ranges.reverse(); rangeList = rangeList.diff(ranges, false); } else {
SVNErrorManager.assertionFailure(SVNRevision.isValidRevisionNumber(primaryURLDeletedRevision), "deleted revision must exist", SVNLogType.WC); if (isRollback) { child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse();
ranges = ranges.reverse(); rangeList = rangeList.diff(ranges, false); } else {
SVNErrorManager.assertionFailure(SVNRevision.isValidRevisionNumber(primaryURLDeletedRevision), "deleted revision must exist", SVNLogType.WC); if (isRollback) { child.remainingRanges = child.remainingRanges.reverse(); parent.remainingRanges = parent.remainingRanges.reverse(); child.remainingRanges = child.remainingRanges.reverse(); parent.remainingRanges = parent.remainingRanges.reverse(); child.remainingRanges = child.remainingRanges.reverse(); parent.remainingRanges = parent.remainingRanges.reverse(); child.remainingRanges = child.remainingRanges.reverse(); parent.remainingRanges = parent.remainingRanges.reverse();
child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse();
child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse(); child.myRemainingRanges = child.myRemainingRanges.reverse(); parent.myRemainingRanges = parent.myRemainingRanges.reverse();
ranges = ranges.dup().reverse(); rangelist = rangelist.remove(ranges, false); } else {
if (targetRangeList != null) { SVNMergeRangeList requestedMergeRangeList = new SVNMergeRangeList(new SVNMergeRange(rev1, rev2, true)); requestedMergeRangeList = requestedMergeRangeList.reverse(); child.myRemainingRanges = targetRangeList.intersect(requestedMergeRangeList, false); child.myRemainingRanges = child.myRemainingRanges.reverse(); } else { child.myRemainingRanges = new SVNMergeRangeList(new SVNMergeRange[0]);
requestedMergeRangeList = requestedMergeRangeList.reverse(); if (targetMergeInfo != null) { targetRangeList = (SVNMergeRangeList) targetMergeInfo.get(mergeInfoPath); requestedMergeRangeList = requestedMergeRangeList.reverse(); child.remainingRanges = requestedMergeRangeList.dup(); } else { implicitRangeList = implicitRangeList.reverse(); child.remainingRanges = implicitRangeList.dup();
if (targetRangeList != null) { SVNMergeRangeList requestedMergeRangeList = new SVNMergeRangeList(new SVNMergeRange(rev1, rev2, true)); requestedMergeRangeList = requestedMergeRangeList.reverse(); child.myRemainingRanges = targetRangeList.intersect(requestedMergeRangeList, false); child.myRemainingRanges = child.myRemainingRanges.reverse(); } else { child.myRemainingRanges = new SVNMergeRangeList(new SVNMergeRange[0]);
requestedMergeRangeList = requestedMergeRangeList.reverse(); if (targetMergeInfo != null) { targetRangeList = (SVNMergeRangeList) targetMergeInfo.get(mergeInfoPath); requestedMergeRangeList = requestedMergeRangeList.reverse(); child.myRemainingRanges = requestedMergeRangeList.dup(); } else { implicitRangeList = implicitRangeList.reverse(); child.myRemainingRanges = implicitRangeList.dup();