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/05/17 16:27:28 UTC
svn commit: r538940 - in
/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/ checkin/ remove/
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:brett@apache.org">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:brett@apache.org">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;
}