private void runMergeTask(SVNMergeTask mergeTask, long revision1, long revision2) throws SVNException {
boolean rollback = revision1 > revision2;
SVNURL mergeSource = mergeTask.getMergeSource();
SVNURL mergeSource2 = mergeTask.getMergeSource2();
File mergeTarget = mergeTask.getMergeTarget();
SVNMergeRangeList remainingRanges = mergeTask.getRemainingRanges();
boolean updateWCMergeInfo = mergeTask.isUpdateWCMergeInfo();
SVNCopySource copySource = mergeTask.getTargetCopySource();
if (copySource != null) {
copy(copySource, mergeTarget, true);
}
SVNURL mergeURL1 = !rollback ? mergeSource : mergeSource2;
SVNURL mergeURL2 = !rollback ? mergeSource2 : mergeSource;
myRepository1.setLocation(mergeURL1, false);
myRepository2.setLocation(mergeURL2, false);
SVNAdminArea targetArea = retrieve(myWCAccess, mergeTarget.getParentFile());
myCurrentRemainingRanges = remainingRanges;
myRecordMergeInfo = Boolean.valueOf(updateWCMergeInfo);
try {
doFileMerge(mergeURL1, revision1, mergeURL2, revision2, mergeTarget, targetArea, true);
} finally {
myCurrentRemainingRanges = null;
myRecordMergeInfo = null;
}
}