blob: 6e151e4a6ae8e3783c82e44948847f85bcbdd699 [file] [log] [blame]
package org.jetbrains.idea.svn.checkout;
import com.intellij.openapi.util.Version;
import com.intellij.openapi.vcs.VcsException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.svn.WorkingCopyFormat;
import org.jetbrains.idea.svn.api.BaseSvnClient;
import org.jetbrains.idea.svn.commandLine.BaseUpdateCommandListener;
import org.jetbrains.idea.svn.commandLine.CommandUtil;
import org.jetbrains.idea.svn.commandLine.SvnCommandName;
import org.tmatesoft.svn.core.SVNDepth;
import org.tmatesoft.svn.core.wc.ISVNEventHandler;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc2.SvnTarget;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* @author Konstantin Kolosovsky.
*/
public class CmdCheckoutClient extends BaseSvnClient implements CheckoutClient {
@Override
public void checkout(@NotNull SvnTarget source,
@NotNull File destination,
@Nullable SVNRevision revision,
@Nullable SVNDepth depth,
boolean ignoreExternals,
boolean force,
@NotNull WorkingCopyFormat format,
@Nullable ISVNEventHandler handler) throws VcsException {
validateFormat(format, getSupportedFormats());
List<String> parameters = new ArrayList<String>();
CommandUtil.put(parameters, source);
CommandUtil.put(parameters, destination, false);
CommandUtil.put(parameters, depth);
CommandUtil.put(parameters, revision);
CommandUtil.put(parameters, ignoreExternals, "--ignore-externals");
CommandUtil.put(parameters, force, "--force"); // corresponds to "allowUnversionedObstructions" in SVNKit
run(source, destination, handler, parameters);
}
@Override
public List<WorkingCopyFormat> getSupportedFormats() throws VcsException {
ArrayList<WorkingCopyFormat> result = new ArrayList<WorkingCopyFormat>();
Version version = myFactory.createVersionClient().getVersion();
result.add(WorkingCopyFormat.from(version));
return result;
}
private void run(@NotNull SvnTarget source,
@NotNull File destination,
@Nullable ISVNEventHandler handler,
@NotNull List<String> parameters) throws VcsException {
BaseUpdateCommandListener listener = new BaseUpdateCommandListener(destination, handler);
CommandUtil.execute(myVcs, source, SvnCommandName.checkout, parameters, listener);
listener.throwWrappedIfException();
}
}