Author: evenisse
Date: Thu May 17 07:27:28 2007
New Revision: 538940

URL: http://svn.apache.org/viewvc?view=rev&rev=538940
Log:
[SCM-315] Use --targets parameter instaed of a long list of files.

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/SvnCommandLineUtils.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/add/SvnAddCommand.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/checkin/SvnCheckInCommand.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/remove/SvnRemoveCommand.java

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/SvnCommandLineUtils.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/SvnCommandLineUtils.java?view=diff&rev=538940&r1=538939&r2=538940
==============================================================================
--- 
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/SvnCommandLineUtils.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/SvnCommandLineUtils.java
 Thu May 17 07:27:28 2007
@@ -29,6 +29,11 @@
 import org.codehaus.plexus.util.cli.StreamConsumer;
 
 import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.Iterator;
+import java.util.List;
 
 /**
  * Command line construction utility.
@@ -38,12 +43,34 @@
  */
 public class SvnCommandLineUtils
 {
-    public static void addFiles( Commandline cl, File[] files )
+    public static void addTarget( Commandline cl, List/*<File>*/ files )
+        throws IOException
     {
-        for ( int i = 0; i < files.length; i++ )
+        if ( files == null || files.isEmpty() )
         {
-            cl.createArgument().setValue( files[i].getPath().replace( '\\', 
'/' ) );
+            return;
         }
+
+        StringBuffer sb = new StringBuffer();
+        String ls = System.getProperty( "line.separator" );
+        for ( Iterator i = files.iterator(); i.hasNext(); )
+        {
+            File f = (File) i.next();
+            sb.append( f.getPath().replace( '\\', '/' ) );
+            sb.append( ls );
+        }
+
+        File targets = File.createTempFile( "maven-scm-", "-targets" );
+        PrintStream out = new PrintStream( new FileOutputStream( targets ) );
+        out.print( sb.toString() );
+        out.flush();
+        out.close();
+        System.out.println( "targets:"+sb.toString() );
+
+        cl.createArgument().setValue( "--targets" );
+        cl.createArgument().setValue( targets.getAbsolutePath() );
+
+        targets.deleteOnExit();
     }
 
     public static Commandline getBaseSvnCommandLine( File workingDirectory, 
SvnScmProviderRepository repository )

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/add/SvnAddCommand.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/add/SvnAddCommand.java?view=diff&rev=538940&r1=538939&r2=538940
==============================================================================
--- 
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/add/SvnAddCommand.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/add/SvnAddCommand.java
 Thu May 17 07:27:28 2007
@@ -32,6 +32,8 @@
 import org.codehaus.plexus.util.cli.Commandline;
 
 import java.io.File;
+import java.io.IOException;
+import java.util.List;
 
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
@@ -56,7 +58,7 @@
             throw new ScmException( "You must provide at least one 
file/directory to add" );
         }
 
-        Commandline cl = createCommandLine( fileSet.getBasedir(), 
fileSet.getFiles() );
+        Commandline cl = createCommandLine( fileSet.getBasedir(), 
fileSet.getFileList() );
 
         SvnAddConsumer consumer = new SvnAddConsumer( getLogger() );
 
@@ -84,7 +86,8 @@
         return new AddScmResult( cl.toString(), consumer.getAddedFiles() );
     }
 
-    private static Commandline createCommandLine( File workingDirectory, 
File[] files )
+    private static Commandline createCommandLine( File workingDirectory, 
List/*File*/ files )
+        throws ScmException
     {
         // Base command line doesn't make sense here - username/password not 
needed, and non-interactive is not valid
 
@@ -98,7 +101,14 @@
 
         cl.createArgument().setValue( "--non-recursive" );
 
-        SvnCommandLineUtils.addFiles( cl, files );
+        try
+        {
+            SvnCommandLineUtils.addTarget( cl, files );
+        }
+        catch ( IOException e )
+        {
+            throw new ScmException( "Can't create the targets file", e );
+        }
 
         return cl;
     }

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/checkin/SvnCheckInCommand.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/checkin/SvnCheckInCommand.java?view=diff&rev=538940&r1=538939&r2=538940
==============================================================================
--- 
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/checkin/SvnCheckInCommand.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/checkin/SvnCheckInCommand.java
 Thu May 17 07:27:28 2007
@@ -111,6 +111,7 @@
 
     public static Commandline createCommandLine( SvnScmProviderRepository 
repository, ScmFileSet fileSet,
                                                  File messageFile )
+        throws ScmException
     {
         Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine( 
fileSet.getBasedir(), repository );
 
@@ -120,7 +121,14 @@
 
         cl.createArgument().setValue( messageFile.getAbsolutePath() );
 
-        SvnCommandLineUtils.addFiles( cl, fileSet.getFiles() );
+        try
+        {
+            SvnCommandLineUtils.addTarget( cl, fileSet.getFileList() );
+        }
+        catch ( IOException e )
+        {
+            throw new ScmException( "Can't create the targets file", e );
+        }
 
         return cl;
     }

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/remove/SvnRemoveCommand.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/remove/SvnRemoveCommand.java?view=diff&rev=538940&r1=538939&r2=538940
==============================================================================
--- 
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/remove/SvnRemoveCommand.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/remove/SvnRemoveCommand.java
 Thu May 17 07:27:28 2007
@@ -32,6 +32,8 @@
 import org.codehaus.plexus.util.cli.Commandline;
 
 import java.io.File;
+import java.io.IOException;
+import java.util.List;
 
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
@@ -49,7 +51,7 @@
             throw new ScmException( "You must provide at least one 
file/directory to remove" );
         }
 
-        Commandline cl = createCommandLine( fileSet.getBasedir(), 
fileSet.getFiles() );
+        Commandline cl = createCommandLine( fileSet.getBasedir(), 
fileSet.getFileList() );
 
         SvnRemoveConsumer consumer = new SvnRemoveConsumer( getLogger() );
 
@@ -77,7 +79,8 @@
         return new RemoveScmResult( cl.toString(), consumer.getRemovedFiles() 
);
     }
 
-    private static Commandline createCommandLine( File workingDirectory, 
File[] files )
+    private static Commandline createCommandLine( File workingDirectory, 
List/*File*/ files )
+        throws ScmException
     {
         // Base command line doesn't make sense here - username/password not 
needed, and non-interactive/non-recusive is not valid
 
@@ -89,7 +92,14 @@
 
         cl.createArgument().setValue( "remove" );
 
-        SvnCommandLineUtils.addFiles( cl, files );
+        try
+        {
+            SvnCommandLineUtils.addTarget( cl, files );
+        }
+        catch ( IOException e )
+        {
+            throw new ScmException( "Can't create the targets file", e );
+        }
 
         return cl;
     }


Reply via email to