You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2007/03/20 16:48:16 UTC
svn commit: r520441 - in /maven/scm/trunk:
maven-scm-api/src/main/java/org/apache/maven/scm/
maven-scm-api/src/main/java/org/apache/maven/scm/command/export/
maven-scm-api/src/main/java/org/apache/maven/scm/provider/
maven-scm-plugin/src/main/java/org/...
Author: evenisse
Date: Tue Mar 20 08:48:14 2007
New Revision: 520441
URL: http://svn.apache.org/viewvc?view=rev&rev=520441
Log:
[SCM-210] Add export mechanism for svn and cvs and export mojo
Added:
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/AbstractExportCommand.java (with props)
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResult.java (with props)
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResultWithRevision.java (with props)
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ExportMojo.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/export/
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/export/AbstractCvsExportCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/export/
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/export/CvsExeExportCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/export/
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/export/CvsJavaExportCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java (with props)
Modified:
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/CvsJavaScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateConsumer.java
maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java Tue Mar 20 08:48:14 2007
@@ -59,6 +59,8 @@
public final static CommandParameter OUTPUT_FILE = new CommandParameter( "outputFile" );
+ public final static CommandParameter OUTPUT_DIRECTORY = new CommandParameter( "outputDirectory" );
+
public final static CommandParameter RUN_CHANGELOG_WITH_UPDATE =
new CommandParameter( "run_changelog_with_update" );
Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/AbstractExportCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/AbstractExportCommand.java?view=auto&rev=520441
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/AbstractExportCommand.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/AbstractExportCommand.java Tue Mar 20 08:48:14 2007
@@ -0,0 +1,51 @@
+package org.apache.maven.scm.command.export;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public abstract class AbstractExportCommand
+ extends AbstractCommand
+{
+ protected abstract ExportScmResult executeExportCommand( ScmProviderRepository repository, ScmFileSet fileSet,
+ String tag, String outputDirectory )
+ throws ScmException;
+
+ protected ScmResult executeCommand( ScmProviderRepository repository, ScmFileSet fileSet,
+ CommandParameters parameters )
+ throws ScmException
+ {
+ String tag = parameters.getString( CommandParameter.TAG, null );
+
+ String outputDirectory = parameters.getString( CommandParameter.OUTPUT_DIRECTORY, null );
+
+ return executeExportCommand( repository, fileSet, tag, outputDirectory );
+ }
+}
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/AbstractExportCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/AbstractExportCommand.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResult.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResult.java?view=auto&rev=520441
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResult.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResult.java Tue Mar 20 08:48:14 2007
@@ -0,0 +1,51 @@
+package org.apache.maven.scm.command.export;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.ScmResult;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class ExportScmResult
+ extends ScmResult
+{
+ private List exportedFiles;
+
+ public ExportScmResult( String commandLine, String providerMessage, String commandOutput, boolean success )
+ {
+ super( commandLine, providerMessage, commandOutput, success );
+ }
+
+ public ExportScmResult( String commandLine, List updatedFiles )
+ {
+ super( commandLine, null, null, true );
+
+ this.exportedFiles = updatedFiles;
+ }
+
+ public List getExportedFiles()
+ {
+ return exportedFiles;
+ }
+}
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResult.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResult.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResultWithRevision.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResultWithRevision.java?view=auto&rev=520441
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResultWithRevision.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResultWithRevision.java Tue Mar 20 08:48:14 2007
@@ -0,0 +1,52 @@
+package org.apache.maven.scm.command.export;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class ExportScmResultWithRevision
+ extends ExportScmResult
+{
+ private String revision;
+
+ public ExportScmResultWithRevision( String commandLine, String providerMessage, String commandOutput,
+ String revision, boolean success )
+ {
+ super( commandLine, providerMessage, commandOutput, success );
+
+ this.revision = revision;
+ }
+
+ public ExportScmResultWithRevision( String commandLine, List exportedFiles, String revision )
+ {
+ super( commandLine, exportedFiles );
+
+ this.revision = revision;
+ }
+
+ public String getRevision()
+ {
+ return revision;
+ }
+}
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResultWithRevision.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/export/ExportScmResultWithRevision.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java Tue Mar 20 08:48:14 2007
@@ -30,6 +30,7 @@
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
import org.apache.maven.scm.command.diff.DiffScmResult;
import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.command.export.ExportScmResult;
import org.apache.maven.scm.command.list.ListScmResult;
import org.apache.maven.scm.command.login.LoginScmResult;
import org.apache.maven.scm.command.remove.RemoveScmResult;
@@ -267,6 +268,32 @@
throw new NoSuchCommandScmException( "checkout" );
}
+ public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException
+ {
+ return export( repository, fileSet, tag, null );
+ }
+
+ public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
+ throws ScmException
+ {
+ login( repository, fileSet );
+
+ CommandParameters parameters = new CommandParameters();
+
+ parameters.setString( CommandParameter.TAG, tag );
+
+ parameters.setString( CommandParameter.OUTPUT_DIRECTORY, outputDirectory );
+
+ return export( repository, fileSet, parameters );
+ }
+
+ protected ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ throw new NoSuchCommandScmException( "export" );
+ }
+
/**
* @see org.apache.maven.scm.provider.ScmProvider#diff(org.apache.maven.scm.repository.ScmRepository,org.apache.maven.scm.ScmFileSet,java.lang.String,java.lang.String)
*/
@@ -395,8 +422,8 @@
return update( repository, fileSet, tag, datePattern, true );
}
- private UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag,
- String datePattern, boolean runChangelog )
+ private UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern,
+ boolean runChangelog )
throws ScmException
{
login( repository, fileSet );
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java Tue Mar 20 08:48:14 2007
@@ -27,6 +27,7 @@
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
import org.apache.maven.scm.command.diff.DiffScmResult;
import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.command.export.ExportScmResult;
import org.apache.maven.scm.command.list.ListScmResult;
import org.apache.maven.scm.command.remove.RemoveScmResult;
import org.apache.maven.scm.command.status.StatusScmResult;
@@ -224,6 +225,31 @@
throws ScmException;
DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision )
+ throws ScmException;
+
+ /**
+ * Create an exported copy of the repository on your local machine
+ *
+ * @param repository the source control system
+ * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location
+ * @param tag get the version defined by the tag
+ * @return
+ * @throws ScmException
+ */
+ ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException;
+
+ /**
+ * Create an exported copy of the repository on your local machine
+ *
+ * @param repository the source control system
+ * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location
+ * @param tag get the version defined by the tag
+ * @param outputDirectory the directory where the export will be stored
+ * @return
+ * @throws ScmException
+ */
+ ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
throws ScmException;
/**
Added: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ExportMojo.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ExportMojo.java?view=auto&rev=520441
==============================================================================
--- maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ExportMojo.java (added)
+++ maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ExportMojo.java Tue Mar 20 08:48:14 2007
@@ -0,0 +1,135 @@
+package org.apache.maven.scm.plugin;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Get a fresh exported copy of the latest source from the configured scm url.
+ *
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ * @goal export
+ * @description Export a project
+ * @requiresProject false
+ */
+public class ExportMojo
+ extends AbstractScmMojo
+{
+ /**
+ * Branch name.
+ *
+ * @parameter expression="${branch}"
+ */
+ private String branch;
+
+ /**
+ * The tag to use when checking out or tagging a project.
+ *
+ * @parameter expression="${tag}"
+ */
+ private String tag;
+
+ /**
+ * The directory to export the sources to.
+ *
+ * @parameter expression="${exportDirectory}"
+ */
+ private String exportDirectory;
+
+ public void execute()
+ throws MojoExecutionException
+ {
+ export();
+ }
+
+ protected String getExportDirectory()
+ {
+ return this.exportDirectory;
+ }
+
+ public void setExportDirectory( String exportDirectory )
+ {
+ this.exportDirectory = exportDirectory;
+ }
+
+ protected void export()
+ throws MojoExecutionException
+ {
+ try
+ {
+ ScmRepository repository = getScmRepository();
+
+ String currentTag = null;
+
+ if ( branch != null )
+ {
+ currentTag = branch;
+ }
+
+ if ( tag != null )
+ {
+ currentTag = tag;
+ }
+
+ try
+ {
+ if ( StringUtils.isNotEmpty( getExportDirectory() ) )
+ {
+ File f = new File( getExportDirectory() );
+ if ( f.exists() )
+ {
+ this.getLog().info( "Removing " + getExportDirectory() );
+
+ FileUtils.deleteDirectory( getExportDirectory() );
+ }
+
+ f.mkdirs();
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Cannot remove " + getExportDirectory() );
+ }
+
+ ExportScmResult result = getScmManager().getProviderByRepository( repository ).export( repository,
+ new ScmFileSet(
+ new File(
+ getExportDirectory() ).getAbsoluteFile() ),
+ currentTag,
+ getExportDirectory() );
+
+ checkResult( result );
+ }
+ catch ( ScmException e )
+ {
+ throw new MojoExecutionException( "Cannot run export command : ", e );
+ }
+ }
+}
Propchange: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ExportMojo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ExportMojo.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java Tue Mar 20 08:48:14 2007
@@ -29,6 +29,7 @@
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
import org.apache.maven.scm.command.diff.DiffScmResult;
+import org.apache.maven.scm.command.export.ExportScmResult;
import org.apache.maven.scm.command.list.ListScmResult;
import org.apache.maven.scm.command.login.LoginScmResult;
import org.apache.maven.scm.command.remove.RemoveScmResult;
@@ -530,6 +531,8 @@
protected abstract Command getDiffCommand();
+ protected abstract Command getExportCommand();
+
protected abstract Command getListCommand();
protected abstract Command getLoginCommand();
@@ -588,6 +591,15 @@
}
/**
+ * @see org.apache.maven.scm.provider.AbstractScmProvider#export(org.apache.maven.scm.repository.ScmRepository,org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.CommandParameters)
+ */
+ protected ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ return (ExportScmResult) executeCommand( getExportCommand(), repository, fileSet, parameters );
+ }
+
+ /**
* @see org.apache.maven.scm.provider.AbstractScmProvider#login(org.apache.maven.scm.repository.ScmRepository,org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.CommandParameters)
*/
public LoginScmResult login( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
@@ -653,6 +665,7 @@
throws ScmException
{
ScmFileSet newFileSet = null;
+
try
{
File basedir = getAbsoluteFilePath( currentFileSet.getBasedir() );
Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/export/AbstractCvsExportCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/export/AbstractCvsExportCommand.java?view=auto&rev=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/export/AbstractCvsExportCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/export/AbstractCvsExportCommand.java Tue Mar 20 08:48:14 2007
@@ -0,0 +1,73 @@
+package org.apache.maven.scm.provider.cvslib.command.export;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.export.AbstractExportCommand;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.cvslib.command.CvsCommandUtils;
+import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public abstract class AbstractCvsExportCommand
+ extends AbstractExportCommand
+{
+ protected ExportScmResult executeExportCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag,
+ String outputDirectory )
+ throws ScmException
+ {
+ CvsScmProviderRepository repository = (CvsScmProviderRepository) repo;
+
+ Commandline cl = CvsCommandUtils.getBaseCommand( "export", repository, fileSet );
+
+ if ( tag != null )
+ {
+ cl.createArgument().setValue( "-r" + tag );
+ }
+ else
+ {
+ cl.createArgument().setValue( "-rHEAD" );
+ }
+
+ if ( StringUtils.isNotEmpty( outputDirectory ) )
+ {
+ cl.createArgument().setValue( "-d" );
+
+ cl.createArgument().setValue( outputDirectory );
+ }
+
+ cl.createArgument().setValue( repository.getModule() );
+
+ getLogger().info( "Executing: " + cl );
+ getLogger().info( "Working directory: " + cl.getWorkingDirectory().getAbsolutePath() );
+
+ return executeCvsCommand( cl );
+ }
+
+ protected abstract ExportScmResult executeCvsCommand( Commandline cl )
+ throws ScmException;
+}
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/export/AbstractCvsExportCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/export/AbstractCvsExportCommand.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java Tue Mar 20 08:48:14 2007
@@ -27,6 +27,7 @@
import org.apache.maven.scm.provider.cvslib.cvsexe.command.checkin.CvsExeCheckInCommand;
import org.apache.maven.scm.provider.cvslib.cvsexe.command.checkout.CvsExeCheckOutCommand;
import org.apache.maven.scm.provider.cvslib.cvsexe.command.diff.CvsExeDiffCommand;
+import org.apache.maven.scm.provider.cvslib.cvsexe.command.export.CvsExeExportCommand;
import org.apache.maven.scm.provider.cvslib.cvsexe.command.list.CvsExeListCommand;
import org.apache.maven.scm.provider.cvslib.cvsexe.command.remove.CvsExeRemoveCommand;
import org.apache.maven.scm.provider.cvslib.cvsexe.command.status.CvsExeStatusCommand;
@@ -64,6 +65,11 @@
protected Command getDiffCommand()
{
return new CvsExeDiffCommand();
+ }
+
+ protected Command getExportCommand()
+ {
+ return new CvsExeExportCommand();
}
protected Command getListCommand()
Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/export/CvsExeExportCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/export/CvsExeExportCommand.java?view=auto&rev=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/export/CvsExeExportCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/export/CvsExeExportCommand.java Tue Mar 20 08:48:14 2007
@@ -0,0 +1,63 @@
+package org.apache.maven.scm.provider.cvslib.cvsexe.command.export;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.provider.cvslib.command.export.AbstractCvsExportCommand;
+import org.apache.maven.scm.provider.cvslib.command.update.CvsUpdateConsumer;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.ScmException;
+import org.codehaus.plexus.util.cli.Commandline;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.CommandLineException;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class CvsExeExportCommand
+ extends AbstractCvsExportCommand
+{
+ protected ExportScmResult executeCvsCommand( Commandline cl )
+ throws ScmException
+ {
+ CvsUpdateConsumer consumer = new CvsUpdateConsumer( getLogger() );
+
+ CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
+
+ int exitCode;
+
+ try
+ {
+ exitCode = CommandLineUtils.executeCommandLine( cl, consumer, stderr );
+ }
+ catch ( CommandLineException ex )
+ {
+ throw new ScmException( "Error while executing command.", ex );
+ }
+
+ if ( exitCode != 0 )
+ {
+ return new ExportScmResult( cl.toString(), "The cvs command failed.", stderr.getOutput(), false );
+ }
+
+ return new ExportScmResult( cl.toString(), consumer.getUpdatedFiles() );
+ }
+}
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/export/CvsExeExportCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/export/CvsExeExportCommand.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/CvsJavaScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/CvsJavaScmProvider.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/CvsJavaScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/CvsJavaScmProvider.java Tue Mar 20 08:48:14 2007
@@ -22,11 +22,12 @@
import org.apache.maven.scm.command.Command;
import org.apache.maven.scm.provider.cvslib.AbstractCvsScmProvider;
import org.apache.maven.scm.provider.cvslib.command.login.CvsLoginCommand;
-import org.apache.maven.scm.provider.cvslib.cvsjava.command.changelog.CvsJavaChangeLogCommand;
import org.apache.maven.scm.provider.cvslib.cvsjava.command.add.CvsJavaAddCommand;
+import org.apache.maven.scm.provider.cvslib.cvsjava.command.changelog.CvsJavaChangeLogCommand;
import org.apache.maven.scm.provider.cvslib.cvsjava.command.checkin.CvsJavaCheckInCommand;
import org.apache.maven.scm.provider.cvslib.cvsjava.command.checkout.CvsJavaCheckOutCommand;
import org.apache.maven.scm.provider.cvslib.cvsjava.command.diff.CvsJavaDiffCommand;
+import org.apache.maven.scm.provider.cvslib.cvsjava.command.export.CvsJavaExportCommand;
import org.apache.maven.scm.provider.cvslib.cvsjava.command.list.CvsJavaListCommand;
import org.apache.maven.scm.provider.cvslib.cvsjava.command.remove.CvsJavaRemoveCommand;
import org.apache.maven.scm.provider.cvslib.cvsjava.command.status.CvsJavaStatusCommand;
@@ -64,6 +65,11 @@
protected Command getDiffCommand()
{
return new CvsJavaDiffCommand();
+ }
+
+ protected Command getExportCommand()
+ {
+ return new CvsJavaExportCommand();
}
protected Command getListCommand()
Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/export/CvsJavaExportCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/export/CvsJavaExportCommand.java?view=auto&rev=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/export/CvsJavaExportCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/export/CvsJavaExportCommand.java Tue Mar 20 08:48:14 2007
@@ -0,0 +1,78 @@
+package org.apache.maven.scm.provider.cvslib.cvsjava.command.export;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.provider.cvslib.command.export.AbstractCvsExportCommand;
+import org.apache.maven.scm.provider.cvslib.command.update.CvsUpdateConsumer;
+import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection;
+import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsLogListener;
+import org.codehaus.plexus.util.cli.Commandline;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.InputStreamReader;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class CvsJavaExportCommand
+ extends AbstractCvsExportCommand
+{
+ protected ExportScmResult executeCvsCommand( Commandline cl )
+ throws ScmException
+ {
+ CvsLogListener logListener = new CvsLogListener();
+
+ CvsUpdateConsumer consumer = new CvsUpdateConsumer( getLogger() );
+
+ try
+ {
+ boolean isSuccess = CvsConnection.processCommand( cl.getArguments(),
+ cl.getWorkingDirectory().getAbsolutePath(), logListener,
+ getLogger() );
+
+ if ( !isSuccess )
+ {
+ return new ExportScmResult( cl.toString(), "The cvs command failed.",
+ logListener.getStderr().toString(), false );
+ }
+ BufferedReader stream = new BufferedReader(
+ new InputStreamReader( new ByteArrayInputStream( logListener.getStdout().toString().getBytes() ) ) );
+
+ String line;
+
+ while ( ( line = stream.readLine() ) != null )
+ {
+ consumer.consumeLine( line );
+ }
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ return new ExportScmResult( cl.toString(), "The cvs command failed.", logListener.getStderr().toString(),
+ false );
+ }
+
+ return new ExportScmResult( cl.toString(), consumer.getUpdatedFiles() );
+ }
+}
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/export/CvsJavaExportCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/export/CvsJavaExportCommand.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java Tue Mar 20 08:48:14 2007
@@ -28,6 +28,7 @@
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
import org.apache.maven.scm.command.diff.DiffScmResult;
+import org.apache.maven.scm.command.export.ExportScmResult;
import org.apache.maven.scm.command.list.ListScmResult;
import org.apache.maven.scm.command.remove.RemoveScmResult;
import org.apache.maven.scm.command.status.StatusScmResult;
@@ -266,6 +267,14 @@
throws ScmException
{
return (DiffScmResult) executeCommand( getDiffCommand(), repository, fileSet, parameters );
+ }
+
+ protected abstract SvnCommand getExportCommand();
+
+ protected ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ return (ExportScmResult) executeCommand( getExportCommand(), repository, fileSet, parameters );
}
protected abstract SvnCommand getRemoveCommand();
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java Tue Mar 20 08:48:14 2007
@@ -30,6 +30,7 @@
import org.apache.maven.scm.provider.svn.svnexe.command.checkin.SvnCheckInCommand;
import org.apache.maven.scm.provider.svn.svnexe.command.checkout.SvnCheckOutCommand;
import org.apache.maven.scm.provider.svn.svnexe.command.diff.SvnDiffCommand;
+import org.apache.maven.scm.provider.svn.svnexe.command.export.SvnExeExportCommand;
import org.apache.maven.scm.provider.svn.svnexe.command.info.SvnInfoCommand;
import org.apache.maven.scm.provider.svn.svnexe.command.list.SvnListCommand;
import org.apache.maven.scm.provider.svn.svnexe.command.remove.SvnRemoveCommand;
@@ -71,6 +72,11 @@
protected SvnCommand getDiffCommand()
{
return new SvnDiffCommand();
+ }
+
+ protected SvnCommand getExportCommand()
+ {
+ return new SvnExeExportCommand();
}
protected SvnCommand getRemoveCommand()
Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java?view=auto&rev=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java Tue Mar 20 08:48:14 2007
@@ -0,0 +1,126 @@
+package org.apache.maven.scm.provider.svn.svnexe.command.export;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.export.AbstractExportCommand;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.command.export.ExportScmResultWithRevision;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.svn.SvnCommandUtils;
+import org.apache.maven.scm.provider.svn.SvnTagBranchUtils;
+import org.apache.maven.scm.provider.svn.command.SvnCommand;
+import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
+import org.apache.maven.scm.provider.svn.svnexe.command.SvnCommandLineUtils;
+import org.apache.maven.scm.provider.svn.svnexe.command.update.SvnUpdateConsumer;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+
+import java.io.File;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class SvnExeExportCommand
+ extends AbstractExportCommand
+ implements SvnCommand
+
+{
+ protected ExportScmResult executeExportCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag,
+ String outputDirectory )
+ throws ScmException
+ {
+ SvnScmProviderRepository repository = (SvnScmProviderRepository) repo;
+
+ String url = repository.getUrl();
+
+ if ( tag != null && StringUtils.isNotEmpty( tag.trim() ) )
+ {
+ url = SvnTagBranchUtils.resolveTagUrl( repository, tag );
+ }
+
+ url = SvnCommandUtils.fixUrl( url, repository.getUser() );
+
+ Commandline cl =
+ createCommandLine( (SvnScmProviderRepository) repo, fileSet.getBasedir(), tag, url, outputDirectory );
+
+ SvnUpdateConsumer consumer = new SvnUpdateConsumer( getLogger(), fileSet.getBasedir() );
+
+ CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
+
+ getLogger().info( "Executing: " + SvnCommandLineUtils.cryptPassword( cl ) );
+ getLogger().info( "Working directory: " + cl.getWorkingDirectory().getAbsolutePath() );
+
+ int exitCode;
+
+ try
+ {
+ exitCode = SvnCommandLineUtils.execute( cl, consumer, stderr, getLogger() );
+ }
+ catch ( CommandLineException ex )
+ {
+ throw new ScmException( "Error while executing command.", ex );
+ }
+
+ if ( exitCode != 0 )
+ {
+ return new ExportScmResult( cl.toString(), "The svn command failed.", stderr.getOutput(), false );
+ }
+
+ return new ExportScmResultWithRevision( cl.toString(), consumer.getUpdatedFiles(),
+ String.valueOf( consumer.getRevision() ) );
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
+ public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory, String tag,
+ String url, String outputSirectory )
+ {
+ if ( tag != null && StringUtils.isEmpty( tag.trim() ) )
+ {
+ tag = null;
+ }
+
+ Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine( workingDirectory, repository );
+
+ cl.createArgument().setValue( "export" );
+
+ if ( StringUtils.isNotEmpty( tag ) )
+ {
+ cl.createArgument().setValue( "-r" );
+ cl.createArgument().setValue( tag );
+ }
+
+ cl.createArgument().setValue( url );
+
+ if ( StringUtils.isNotEmpty( outputSirectory ) )
+ {
+ cl.createArgument().setValue( outputSirectory );
+ }
+
+ return cl;
+ }
+}
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java Tue Mar 20 08:48:14 2007
@@ -46,7 +46,6 @@
extends AbstractUpdateCommand
implements SvnCommand
{
-
protected UpdateScmResult executeUpdateCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag )
throws ScmException
{
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateConsumer.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateConsumer.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateConsumer.java Tue Mar 20 08:48:14 2007
@@ -38,6 +38,8 @@
private static final String AT_REVISION_TOKEN = "At revision";
+ private static final String EXPORTED_REVISION_TOKEN = "Exported revision";
+
private static final String RESTORED_TOKEN = "Restored";
// ----------------------------------------------------------------------
@@ -73,6 +75,14 @@
else if ( line.startsWith( AT_REVISION_TOKEN ) )
{
String revisionString = line.substring( AT_REVISION_TOKEN.length() + 1, line.length() - 1 );
+
+ revision = parseInt( revisionString );
+
+ return;
+ }
+ else if ( line.startsWith( EXPORTED_REVISION_TOKEN ) )
+ {
+ String revisionString = line.substring( EXPORTED_REVISION_TOKEN.length() + 1, line.length() - 1 );
revision = parseInt( revisionString );
Modified: maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java?view=diff&rev=520441&r1=520440&r2=520441
==============================================================================
--- maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java (original)
+++ maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java Tue Mar 20 08:48:14 2007
@@ -27,6 +27,7 @@
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
import org.apache.maven.scm.command.diff.DiffScmResult;
import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.command.export.ExportScmResult;
import org.apache.maven.scm.command.list.ListScmResult;
import org.apache.maven.scm.command.remove.RemoveScmResult;
import org.apache.maven.scm.command.status.StatusScmResult;
@@ -89,6 +90,8 @@
private ListScmResult listScmResult;
+ private ExportScmResult exportScmResult;
+
/**
* Create a new ScmProviderStub with bogus (not null) attributes
*/
@@ -101,6 +104,7 @@
setCheckOutScmResult( new CheckOutScmResult( "", "", "", true ) );
setDiffScmResult( new DiffScmResult( "", "", "", true ) );
setEditScmResult( new EditScmResult( "", "", "", true ) );
+ setExportScmResult( new ExportScmResult( "", "", "", true ) );
setRemoveScmResult( new RemoveScmResult( "", "", "", true ) );
setStatusScmResult( new StatusScmResult( "", "", "", true ) );
setTagScmResult( new TagScmResult( "", "", "", true ) );
@@ -188,6 +192,16 @@
return diffScmResult;
}
+ public ExportScmResult getExportScmResult()
+ {
+ return exportScmResult;
+ }
+
+ public void setExportScmResult( ExportScmResult exportScmResult )
+ {
+ this.exportScmResult = exportScmResult;
+ }
+
public void setTagScmResult( TagScmResult tagScmResult )
{
this.tagScmResult = tagScmResult;
@@ -358,7 +372,8 @@
return getCheckInScmResult();
}
- public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, String tag, boolean recursive )
+ public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, String tag,
+ boolean recursive )
throws ScmException
{
return getCheckOutScmResult();
@@ -383,6 +398,24 @@
}
/**
+ * @return getExportScmResult() always
+ */
+ public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException
+ {
+ return getExportScmResult();
+ }
+
+ /**
+ * @return getExportScmResult() always
+ */
+ public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
+ throws ScmException
+ {
+ return getExportScmResult();
+ }
+
+ /**
* @return getRemoveScmResult() always
*/
public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message )
@@ -458,7 +491,8 @@
/**
* @return getUpdateScmResult() always
*/
- public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate, String datePattern, boolean runChangelog )
+ public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate,
+ String datePattern, boolean runChangelog )
throws ScmException
{
return getUpdateScmResult();