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 ol...@apache.org on 2009/12/19 19:40:44 UTC

svn commit: r892494 - 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/branch/ maven-scm-api/src/main/java/org/apache/maven/scm/provider/ maven-scm-providers/maven-scm-pr...

Author: olamy
Date: Sat Dec 19 18:40:43 2009
New Revision: 892494

URL: http://svn.apache.org/viewvc?rev=892494&view=rev
Log:
[SCM-515] branch command must support remote branching (svnexe)

Added:
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmBranchParameters.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/CommandParameters.java
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/branch/AbstractBranchCommand.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-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnBranchCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnExeBranchCommandTckTest.java
    maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java
    maven/scm/trunk/pom.xml

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?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- 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 Sat Dec 19 18:40:43 2009
@@ -68,6 +68,8 @@
         new CommandParameter( "run_changelog_with_update" );
 
     public static final CommandParameter SCM_TAG_PARAMETERS = new CommandParameter( "ScmTagParameters" );
+    
+    public static final CommandParameter SCM_BRANCH_PARAMETERS = new CommandParameter( "ScmBranchParameters" );
 
 
     /**

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java Sat Dec 19 18:40:43 2009
@@ -291,6 +291,20 @@
         setObject( parameter, scmTagParameters );
     }
 
+    public void setScmBranchParameters( CommandParameter parameter, ScmBranchParameters scmBranchParameters )
+        throws ScmException
+    {
+        setObject( parameter, scmBranchParameters );
+    }
+
+    public ScmBranchParameters getScmBranchParameters( CommandParameter parameter )
+        throws ScmException
+    {
+        return (ScmBranchParameters) getObject( ScmBranchParameters.class, parameter, new ScmBranchParameters() );
+    }
+
+    
+    
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------

Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmBranchParameters.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmBranchParameters.java?rev=892494&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmBranchParameters.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmBranchParameters.java Sat Dec 19 18:40:43 2009
@@ -0,0 +1,83 @@
+package org.apache.maven.scm;
+
+import java.io.Serializable;
+
+/*
+ * 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.
+ */
+
+/**
+ * @author <a href="mailto:olamy@apache.org">olamy</a>
+ * @since 1.2
+ */
+public class ScmBranchParameters
+    implements Serializable
+{
+    private static final long serialVersionUID = 7241536408630608707L;
+
+    private String message;
+
+    private boolean remoteBranching = false;
+
+    private String scmRevision;
+
+    public ScmBranchParameters()
+    {
+        this.remoteBranching = false;
+    }
+
+    public ScmBranchParameters( String message )
+    {
+        this.message = message;
+    }
+
+    public String getMessage()
+    {
+        return message;
+    }
+
+    public void setMessage( String message )
+    {
+        this.message = message;
+    }
+
+    public String getScmRevision()
+    {
+        return scmRevision;
+    }
+
+    public void setScmRevision( String scmRevision )
+    {
+        this.scmRevision = scmRevision;
+    }
+
+    public boolean isRemoteBranching()
+    {
+        return remoteBranching;
+    }
+
+    public void setRemoteBranching( boolean remoteBranching )
+    {
+        this.remoteBranching = remoteBranching;
+    }
+
+    public String toString()
+    {
+        return "[" + scmRevision + "] " + message;
+    }
+}

Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmBranchParameters.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmBranchParameters.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/branch/AbstractBranchCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/branch/AbstractBranchCommand.java?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/branch/AbstractBranchCommand.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/branch/AbstractBranchCommand.java Sat Dec 19 18:40:43 2009
@@ -21,11 +21,13 @@
 
 import org.apache.maven.scm.CommandParameter;
 import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmBranchParameters;
 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;
+import org.codehaus.plexus.util.StringUtils;
 
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
@@ -38,6 +40,23 @@
     protected abstract ScmResult executeBranchCommand( ScmProviderRepository repository, ScmFileSet fileSet,
                                                        String branchName, String message )
         throws ScmException;
+    
+    /**
+     * default impl to provide backward comp
+     * @since 1.3
+     * @param repository
+     * @param fileSet
+     * @param branchName
+     * @param scmBranchParameters
+     * @return
+     * @throws ScmException
+     */
+    protected ScmResult executeBranchCommand( ScmProviderRepository repository, ScmFileSet fileSet, String branchName,
+                                              ScmBranchParameters scmBranchParameters )
+        throws ScmException
+    {
+        return executeBranchCommand( repository, fileSet, branchName, scmBranchParameters.getMessage() );
+    }
 
     /** {@inheritDoc} */
     public ScmResult executeCommand( ScmProviderRepository repository, ScmFileSet fileSet,
@@ -46,8 +65,15 @@
     {
         String branchName = parameters.getString( CommandParameter.BRANCH_NAME );
 
+        ScmBranchParameters scmBranchParameters = parameters.getScmBranchParameters( CommandParameter.SCM_BRANCH_PARAMETERS );
+        
         String message = parameters.getString( CommandParameter.MESSAGE, "[maven-scm] copy for branch " + branchName );
-
-        return executeBranchCommand( repository, fileSet, branchName, message );
+        
+        if (StringUtils.isBlank( scmBranchParameters.getMessage()) && StringUtils.isNotBlank( message ) ) 
+        {
+            scmBranchParameters.setMessage( message );
+        }
+        
+        return executeBranchCommand( repository, fileSet, branchName, scmBranchParameters );
     }
 }

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?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- 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 Sat Dec 19 18:40:43 2009
@@ -23,6 +23,7 @@
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.NoSuchCommandScmException;
 import org.apache.maven.scm.ScmBranch;
+import org.apache.maven.scm.ScmBranchParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.ScmRevision;
@@ -150,26 +151,37 @@
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName )
         throws ScmException
     {
-        return branch( repository, fileSet, branchName, null );
+        return branch( repository, fileSet, branchName, new ScmBranchParameters() );
     }
 
     /** {@inheritDoc} */
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
         throws ScmException
     {
+        ScmBranchParameters scmBranchParameters = new ScmBranchParameters();
+        
+        if ( StringUtils.isNotEmpty( message ) )
+        {
+            scmBranchParameters.setMessage( message );
+        }
+
+        return branch( repository, fileSet, branchName, scmBranchParameters );
+    }
+    
+    public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName,
+                                   ScmBranchParameters scmBranchParameters )
+        throws ScmException
+    {
         login( repository, fileSet );
 
         CommandParameters parameters = new CommandParameters();
-
+        
         parameters.setString( CommandParameter.BRANCH_NAME, branchName );
 
-        if ( StringUtils.isNotEmpty( message ) )
-        {
-            parameters.setString( CommandParameter.MESSAGE, message );
-        }
+        parameters.setScmBranchParameters( CommandParameter.SCM_BRANCH_PARAMETERS, scmBranchParameters );
 
         return branch( repository.getProviderRepository(), fileSet, parameters );
-    }
+    }  
 
     protected BranchScmResult branch( ScmProviderRepository repository, ScmFileSet fileSet,
                                       CommandParameters parameters )

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?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- 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 Sat Dec 19 18:40:43 2009
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.scm.ScmBranch;
+import org.apache.maven.scm.ScmBranchParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.ScmTagParameters;
@@ -134,6 +135,7 @@
      * @param fileSet    the files to branch. Implementations can also give the changes
      *                   from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
      * @param branchName the branch name to apply to the files
+     * @deprecated use {@link #branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)}
      * @return
      * @throws ScmException if any
      */
@@ -148,11 +150,28 @@
      *                   from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
      * @param branchName the branch name to apply to the files
      * @param message    the commit message used for the tag creation
+     * @deprecated use {@link #branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)}
      * @return
      * @throws ScmException if any
      */
     BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
         throws ScmException;
+    
+    /**
+     * Branch (or label in some systems) will create a branch of the source file with a certain
+     * branch name
+     * 
+     * @param repository the source control system
+     * @param fileSet the files to branch. Implementations can also give the changes from the
+     *            {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
+     * @param branchName the branch name to apply to the files
+     * @param message the commit message used for the tag creation
+     * @since 1.3
+     * @return
+     * @throws ScmException if any
+     */
+    BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, ScmBranchParameters scmBranchParameters )
+        throws ScmException;    
 
     /**
      * Returns the changes that have happend in the source control system in a certain period of time.
@@ -560,6 +579,7 @@
      * @param fileSet    the files to tag. Implementations can also give the changes
      *                   from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
      * @param tagName    the tag name to apply to the files
+     * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)}
      * @return
      * @throws ScmException if any
      */

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/branch/SvnBranchCommand.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/branch/SvnBranchCommand.java?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- 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/branch/SvnBranchCommand.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/branch/SvnBranchCommand.java Sat Dec 19 18:40:43 2009
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.scm.ScmBranch;
+import org.apache.maven.scm.ScmBranchParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileSet;
@@ -54,10 +55,9 @@
     extends AbstractBranchCommand
     implements SvnCommand
 {
-    /** {@inheritDoc} */
-    public ScmResult executeBranchCommand( ScmProviderRepository repo, ScmFileSet fileSet, String branch,
-                                           String message )
-        throws ScmException
+    
+    public ScmResult executeBranchCommand( ScmProviderRepository repo, ScmFileSet fileSet, String branch, ScmBranchParameters scmBranchParameters )
+    throws ScmException
     {
         if ( branch == null || StringUtils.isEmpty( branch.trim() ) )
         {
@@ -75,7 +75,7 @@
 
         try
         {
-            FileUtils.fileWrite( messageFile.getAbsolutePath(), message );
+            FileUtils.fileWrite( messageFile.getAbsolutePath(), scmBranchParameters.getMessage() );
         }
         catch ( IOException ex )
         {
@@ -83,7 +83,7 @@
                 + ex.getMessage(), null, false );
         }
 
-        Commandline cl = createCommandLine( repository, fileSet.getBasedir(), branch, messageFile );
+        Commandline cl = createCommandLine( repository, fileSet.getBasedir(), branch, messageFile, scmBranchParameters );
 
         CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer();
 
@@ -144,6 +144,15 @@
 
         return new BranchScmResult( cl.toString(), fileList );
     }
+    
+    /** {@inheritDoc} */
+    public ScmResult executeBranchCommand( ScmProviderRepository repo, ScmFileSet fileSet, String branch,
+                                           String message )
+        throws ScmException
+    {
+        ScmBranchParameters scmBranchParameters = new ScmBranchParameters( message );
+        return executeBranchCommand( repo, fileSet, branch, scmBranchParameters );
+    }
 
     // ----------------------------------------------------------------------
     //
@@ -152,6 +161,14 @@
     public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory,
                                                  String branch, File messageFile )
     {
+        ScmBranchParameters scmBranchParameters = new ScmBranchParameters();
+        scmBranchParameters.setRemoteBranching( false );
+        return createCommandLine( repository, workingDirectory, branch, messageFile, scmBranchParameters );
+    }
+    
+    public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory,
+                                                 String branch, File messageFile, ScmBranchParameters scmBranchParameters )
+    {
         Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine( workingDirectory, repository );
 
         cl.createArg().setValue( "copy" );
@@ -160,12 +177,23 @@
 
         cl.createArg().setValue( messageFile.getAbsolutePath() );
 
-        cl.createArg().setValue( "." );
-
+        if ( scmBranchParameters != null && scmBranchParameters.isRemoteBranching() )
+        {
+            if (StringUtils.isNotBlank( scmBranchParameters.getScmRevision() ) )
+            {
+                cl.createArg().setValue( "--revision" );
+                cl.createArg().setValue( scmBranchParameters.getScmRevision() );
+            }
+            cl.createArg().setValue( repository.getUrl() );
+        }
+        else
+        {
+            cl.createArg().setValue( "." );
+        }
         // Note: this currently assumes you have the branch base checked out too
         String branchUrl = SvnTagBranchUtils.resolveBranchUrl( repository, new ScmBranch( branch ) );
         cl.createArg().setValue( SvnCommandUtils.fixUrl( branchUrl, repository.getUser() ) );
 
         return cl;
-    }
+    }    
 }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnExeBranchCommandTckTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnExeBranchCommandTckTest.java?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnExeBranchCommandTckTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnExeBranchCommandTckTest.java Sat Dec 19 18:40:43 2009
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.scm.ScmBranchParameters;
 import org.apache.maven.scm.provider.svn.command.branch.SvnBranchCommandTckTest;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
 import org.apache.maven.scm.repository.ScmRepository;
@@ -35,6 +36,48 @@
 public class SvnExeBranchCommandTckTest
     extends SvnBranchCommandTckTest
 {
+    
+    public void testBranchUserNameSvnHttpsRemoteBranchingWithRev()
+        throws Exception
+    {
+        File messageFile = File.createTempFile( "maven-scm", "commit" );
+        messageFile.deleteOnExit();
+
+        ScmBranchParameters scmBranchParameters = new ScmBranchParameters();
+        scmBranchParameters.setRemoteBranching( true );
+        scmBranchParameters.setScmRevision( "2" );
+
+        testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svnbranch", messageFile, "user",
+                         "svn --username user --non-interactive copy --file " + messageFile.getAbsolutePath()
+                             + " --revision 2 https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch",
+                         scmBranchParameters );
+    }
+
+    public void testBranchUserNameSvnHttpsRemoteBranchingNoRev()
+        throws Exception
+    {
+        File messageFile = File.createTempFile( "maven-scm", "commit" );
+        messageFile.deleteOnExit();
+
+        ScmBranchParameters scmBranchParameters = new ScmBranchParameters();
+        scmBranchParameters.setRemoteBranching( true );
+
+        testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svnbranch", messageFile, "user",
+                         "svn --username user --non-interactive copy --file " + messageFile.getAbsolutePath()
+                             + " https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch", scmBranchParameters );
+    }
+
+    public void testBranchUserNameSvnHttps()
+        throws Exception
+    {
+        File messageFile = File.createTempFile( "maven-scm", "commit" );
+        messageFile.deleteOnExit();
+
+        testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svnbranch", messageFile, "user",
+                         "svn --username user --non-interactive copy --file " + messageFile.getAbsolutePath()
+                             + " . https://foo.com/svn/branches/svnbranch", null );
+    }
+
     public void testBranchUserNameSvnSsh()
         throws Exception
     {
@@ -42,11 +85,12 @@
         messageFile.deleteOnExit();
 
         testCommandLine( "scm:svn:svn+ssh://foo.com/svn/trunk", "svnbranch", messageFile, "user",
-                         "svn --username user --non-interactive copy --file " + messageFile.getAbsolutePath() +
-                             " . svn+ssh://user@foo.com/svn/branches/svnbranch" );
+                         "svn --username user --non-interactive copy --file " + messageFile.getAbsolutePath()
+                             + " . svn+ssh://user@foo.com/svn/branches/svnbranch" );
     }
 
-    private void testCommandLine( String scmUrl, String branch, File messageFile, String user, String commandLine )
+    private void testCommandLine( String scmUrl, String branch, File messageFile, String user, String commandLine,
+                                  ScmBranchParameters scmBranchParameters )
         throws Exception
     {
         File workingDirectory = getTestFile( "target/svn-update-command-test" );
@@ -57,8 +101,23 @@
 
         svnRepository.setUser( user );
 
-        Commandline cl = SvnBranchCommand.createCommandLine( svnRepository, workingDirectory, branch, messageFile );
+        Commandline cl = null;
+        if ( scmBranchParameters == null )
+        {
+            cl = SvnBranchCommand.createCommandLine( svnRepository, workingDirectory, branch, messageFile );
+        }
+        else
+        {
+            cl = SvnBranchCommand.createCommandLine( svnRepository, workingDirectory, branch, messageFile,
+                                                     scmBranchParameters );
+        }
 
         assertCommandLine( commandLine, workingDirectory, cl );
     }
+
+    private void testCommandLine( String scmUrl, String branch, File messageFile, String user, String commandLine )
+        throws Exception
+    {
+        testCommandLine( scmUrl, branch, messageFile, user, commandLine, null );
+    }
 }

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?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- 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 Sat Dec 19 18:40:43 2009
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.scm.ScmBranch;
+import org.apache.maven.scm.ScmBranchParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.ScmTagParameters;
@@ -349,6 +350,13 @@
     }
 
     /** {@inheritDoc} */
+    public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, ScmBranchParameters scmBranchParameters )
+        throws ScmException
+    {
+        return getBranchScmResult();
+    }    
+    
+    /** {@inheritDoc} */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, String branch )
         throws ScmException

Modified: maven/scm/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/pom.xml?rev=892494&r1=892493&r2=892494&view=diff
==============================================================================
--- maven/scm/trunk/pom.xml (original)
+++ maven/scm/trunk/pom.xml Sat Dec 19 18:40:43 2009
@@ -328,6 +328,6 @@
           </plugin>
         </plugins>
       </reporting>
-    </profile>
+    </profile>   
   </profiles>
 </project>