package org.tmatesoft.svn.core.internal.wc2.old; import java.util.ArrayList; import java.util.Collection; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc16.SVNDiffClient16; import org.tmatesoft.svn.core.internal.wc2.compat.SvnCodec; import org.tmatesoft.svn.core.wc.SVNRevisionRange; import org.tmatesoft.svn.core.wc2.SvnMerge; import org.tmatesoft.svn.core.wc2.SvnRevisionRange; import org.tmatesoft.svn.core.wc2.SvnTarget; public class SvnOldMerge extends SvnOldRunner<Void, SvnMerge> { @Override protected Void run() throws SVNException { SVNDiffClient16 diffClient = new SVNDiffClient16(getOperation().getRepositoryPool(), getOperation().getOptions()); diffClient.setMergeOptions(getOperation().getMergeOptions()); diffClient.setEventHandler(getOperation().getEventHandler()); if (getOperation().isReintegrate()) { if (getOperation().getSource().isURL()) { diffClient.doMergeReIntegrate( getOperation().getSource().getURL(), getOperation().getSource().getResolvedPegRevision(), getOperation().getFirstTarget().getFile(), getOperation().isDryRun()); } else { diffClient.doMergeReIntegrate( getOperation().getSource().getFile(), getOperation().getSource().getResolvedPegRevision(), getOperation().getFirstTarget().getFile(), getOperation().isDryRun()); } } else if (getOperation().getRevisionRanges() != null) { Collection<SVNRevisionRange> oldRanges = new ArrayList<SVNRevisionRange>(); for (SvnRevisionRange range : getOperation().getRevisionRanges()) { oldRanges.add(SvnCodec.revisionRange(range)); } if (getOperation().getSource().isURL()) { diffClient.doMerge(getOperation().getSource().getURL(), getOperation().getSource().getResolvedPegRevision(), oldRanges, getOperation().getFirstTarget().getFile(), getOperation().getDepth(), !getOperation().isIgnoreAncestry(), getOperation().isForce(), getOperation().isDryRun(), getOperation().isRecordOnly()); } else { diffClient.doMerge(getOperation().getSource().getFile(), getOperation().getSource().getResolvedPegRevision(), oldRanges, getOperation().getFirstTarget().getFile(), getOperation().getDepth(), !getOperation().isIgnoreAncestry(), getOperation().isForce(), getOperation().isDryRun(), getOperation().isRecordOnly()); } } else { SvnTarget firstSource = getOperation().getFirstSource(); SvnTarget secondSource = getOperation().getSecondSource(); if (firstSource.isURL() && secondSource.isURL()) { diffClient.doMerge(firstSource.getURL(), firstSource.getResolvedPegRevision(), secondSource.getURL(), secondSource.getResolvedPegRevision(), getOperation().getFirstTarget().getFile(), getOperation().getDepth(), !getOperation().isIgnoreAncestry(), getOperation().isForce(), getOperation().isDryRun(), getOperation().isRecordOnly()); } else if (firstSource.isURL() && secondSource.isFile()) { diffClient.doMerge(firstSource.getURL(), firstSource.getResolvedPegRevision(), secondSource.getFile(), secondSource.getResolvedPegRevision(), getOperation().getFirstTarget().getFile(), getOperation().getDepth(), !getOperation().isIgnoreAncestry(), getOperation().isForce(), getOperation().isDryRun(), getOperation().isRecordOnly()); } else if (firstSource.isFile() && secondSource.isURL()) { diffClient.doMerge(firstSource.getFile(), firstSource.getResolvedPegRevision(), secondSource.getURL(), secondSource.getResolvedPegRevision(), getOperation().getFirstTarget().getFile(), getOperation().getDepth(), !getOperation().isIgnoreAncestry(), getOperation().isForce(), getOperation().isDryRun(), getOperation().isRecordOnly()); } else if (firstSource.isFile() && secondSource.isFile()) { diffClient.doMerge(firstSource.getFile(), firstSource.getResolvedPegRevision(), secondSource.getFile(), secondSource.getResolvedPegRevision(), getOperation().getFirstTarget().getFile(), getOperation().getDepth(), !getOperation().isIgnoreAncestry(), getOperation().isForce(), getOperation().isDryRun(), getOperation().isRecordOnly()); } } return null; } }