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; }