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 vs...@apache.org on 2008/09/04 01:15:14 UTC

svn commit: r691823 - in /maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command: ./ add/ changelog/ checkin/ checkout/ diff/ edit/ login/ remove/ status/ tag/ unedit/ update/

Author: vsiveton
Date: Wed Sep  3 16:15:13 2008
New Revision: 691823

URL: http://svn.apache.org/viewvc?rev=691823&view=rev
Log:
SCM-246:  p4 command reports most or all errors on stderr but maven-scm-provider-perforce throws away stderr

o using CommandLineUtils.executeCommandLine()

Modified:
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/add/PerforceAddCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkin/PerforceCheckInCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/diff/PerforceDiffCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java Wed Sep  3 16:15:13 2008
@@ -101,6 +101,7 @@
                 }
             }
         }
+
         return singleton;
     }
 
@@ -135,14 +136,12 @@
                     {
                         throw new IllegalStateException( "Unexpected results from 'p4 info' command: " + line );
                     }
-                    else
+
+                    if ( getLogger().isDebugEnabled() )
                     {
-                        if ( getLogger().isDebugEnabled() )
-                        {
-                            getLogger().debug( "Cannot find client." );
-                        }
-                        entries.put( "Client root", "" );
+                        getLogger().debug( "Cannot find client." );
                     }
+                    entries.put( "Client root", "" );
                 }
                 else
                 {

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/add/PerforceAddCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/add/PerforceAddCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/add/PerforceAddCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/add/PerforceAddCommand.java Wed Sep  3 16:15:13 2008
@@ -29,24 +29,20 @@
 import org.apache.maven.scm.provider.perforce.command.PerforceCommand;
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.List;
 
 /**
  * @author Mike Perham
- * @version $Id: PerforceChangeLogCommand.java 264804 2005-08-30 16:09:04Z
- *          evenisse $
+ * @version $Id$
  */
 public class PerforceAddCommand
     extends AbstractAddCommand
     implements PerforceCommand
 {
-
     /** {@inheritDoc} */
     protected ScmResult executeAddCommand( ScmProviderRepository repo, ScmFileSet files, String message,
                                            boolean binary )
@@ -56,12 +52,18 @@
         PerforceAddConsumer consumer = new PerforceAddConsumer();
         try
         {
-            Process proc = cl.execute();
-            BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            String line;
-            while ( ( line = br.readLine() ) != null )
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
         }
         catch ( CommandLineException e )
@@ -71,13 +73,6 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " +e.getMessage(), e );
-            }
-        }
 
         return new AddScmResult( cl.toString(), consumer.getAdditions() );
     }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java Wed Sep  3 16:15:13 2008
@@ -31,12 +31,10 @@
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 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.BufferedReader;
 import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.Date;
 
 /**
@@ -47,7 +45,6 @@
     extends AbstractChangeLogCommand
     implements PerforceCommand
 {
-
     /** {@inheritDoc} */
     protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet,
                                                           Date startDate, Date endDate, ScmBranch branch,
@@ -73,12 +70,19 @@
             {
                 getLogger().debug( PerforceScmProvider.clean( "Executing " + cl.toString() ) );
             }
-            Process proc = cl.execute();
-            BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            String line;
-            while ( ( line = br.readLine() ) != null )
+
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
         }
         catch ( CommandLineException e )
@@ -88,13 +92,6 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " + e.getMessage(), e );
-            }
-        }
 
         return new ChangeLogScmResult( cl.toString(),
                                        new ChangeLogSet( consumer.getModifications(), startDate, endDate ) );

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkin/PerforceCheckInCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkin/PerforceCheckInCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkin/PerforceCheckInCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkin/PerforceCheckInCommand.java Wed Sep  3 16:15:13 2008
@@ -29,21 +29,16 @@
 import org.apache.maven.scm.provider.perforce.command.PerforceCommand;
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
 import java.io.File;
 import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 /**
- * @todo refactor this & other perforce commands -- most of the invocation and stream
- *       consumer code could be shared
  * @author Mike Perham
  * @version $Id$
  */
@@ -66,42 +61,30 @@
             {
                 getLogger().debug( PerforceScmProvider.clean( "Executing " + cl.toString() ) );
             }
-            Process proc = cl.execute();
-            OutputStream out = proc.getOutputStream();
-            DataOutputStream dos = new DataOutputStream( out );
-            PerforceScmProviderRepository prepo = (PerforceScmProviderRepository) repo;
-            String changes = createChangeListSpecification( prepo, files, message, PerforceScmProvider.getRepoPath(
-                getLogger(), prepo, files.getBasedir() ), jobs );
+
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
             if ( getLogger().isDebugEnabled() )
             {
+                PerforceScmProviderRepository prepo = (PerforceScmProviderRepository) repo;
+                String changes =
+                    createChangeListSpecification( prepo, files, message,
+                                                   PerforceScmProvider.getRepoPath( getLogger(), prepo,
+                                                                                    files.getBasedir() ), jobs );
                 getLogger().debug( "Sending changelist:\n" + changes );
             }
-            dos.write( changes.getBytes() );
-            dos.close();
-            out.close();
-
-            // TODO find & use a less naive InputStream multiplexer
-            BufferedReader stdout = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            BufferedReader stderr = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
-            String line;
-            while ( ( line = stdout.readLine() ) != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stdout: " + line );
-                }
-                consumer.consumeLine( line );
-            }
-            while ( ( line = stderr.readLine() ) != null )
+
+            if ( exitCode != 0 )
             {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stderr: " + line );
-                }
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
-            stderr.close();
-            stdout.close();
         }
         catch ( CommandLineException e )
         {
@@ -110,13 +93,6 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " + e.getMessage(), e );
-            }
-        }
 
         return new CheckInScmResult( cl.toString(), consumer.isSuccess() ? "Checkin successful" : "Unable to submit",
                                      consumer.getOutput(), consumer.isSuccess() );

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java Wed Sep  3 16:15:13 2008
@@ -30,18 +30,15 @@
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 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.BufferedReader;
-import java.io.DataOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.io.OutputStream;
 
 /**
- * @todo refactor this & other perforce commands -- most of the invocation and stream
- *       consumer code could be shared
  * @author Mike Perham
  * @version $Id$
  */
@@ -92,59 +89,25 @@
             {
                 getLogger().info( "Executing: " + PerforceScmProvider.clean( cl.toString() ) );
             }
-            Process proc = cl.execute();
 
-            // Write clientspec to STDIN
-            OutputStream out = proc.getOutputStream();
-            DataOutputStream dos = new DataOutputStream( out );
-            String client = PerforceScmProvider.createClientspec( getLogger(), prepo, workingDirectory, actualLocation );
             if ( getLogger().isDebugEnabled() )
             {
+                String client = PerforceScmProvider.createClientspec( getLogger(), prepo, workingDirectory, actualLocation );
                 getLogger().debug( "Updating clientspec:\n" + client );
             }
-            dos.write( client.getBytes() );
-            dos.close();
-            out.close();
-
-            // TODO find & use a less naive InputStream multiplexer
-            BufferedReader stdout = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            BufferedReader stderr = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
-            String line;
-            while ( ( line = stdout.readLine() ) != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stdout: " + line );
-                }
-                consumer.consumeLine( line );
-            }
-            while ( ( line = stderr.readLine() ) != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stderr: " + line );
-                }
-                consumer.consumeLine( line );
-            }
-            stderr.close();
-            stdout.close();
-            // Read errors from STDERR
-            BufferedReader brErr = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
-            while ( ( line = brErr.readLine() ) != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stderr: " + line );
-                }
-                consumer.consumeLine( line );
-            }
-            brErr.close();
-        }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
+
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                getLogger().error( "IOException " + e.getMessage(), e );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
         }
         catch ( CommandLineException e )
@@ -168,41 +131,24 @@
                     {
                         getLogger().debug( "Executing: " + PerforceScmProvider.clean( cl.toString() ) );
                     }
-                    Process proc = cl.execute();
-                    BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-                    String line;
-                    while ( ( line = br.readLine() ) != null )
-                    {
-                        if ( getLogger().isDebugEnabled() )
-                        {
-                            getLogger().debug( "Consuming: " + line );
-                        }
-                        consumer.consumeLine( line );
-                    }
-                    br.close();
-                    // Read errors from STDERR
-                    BufferedReader brErr = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
-                    while ( ( line = brErr.readLine() ) != null )
+                    CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+                    int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+                    if ( exitCode != 0 )
                     {
-                        if ( getLogger().isDebugEnabled() )
-                        {
-                            getLogger().debug( "Consuming stderr: " + line );
-                        }
-                        consumer.consumeLine( line );
+                        String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                        StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                        msg.append( '\n' );
+                        msg.append( "Command line was:" + cmdLine );
+
+                        throw new CommandLineException( msg.toString() );
                     }
-                    brErr.close();
                     if ( getLogger().isDebugEnabled() )
                     {
                         getLogger().debug( "Perforce sync complete." );
                     }
                 }
-                catch ( IOException e )
-                {
-                    if ( getLogger().isErrorEnabled() )
-                    {
-                        getLogger().error( "IOException " + e.getMessage(), e );
-                    }
-                }
                 catch ( CommandLineException e )
                 {
                     if ( getLogger().isErrorEnabled() )

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/diff/PerforceDiffCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/diff/PerforceDiffCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/diff/PerforceDiffCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/diff/PerforceDiffCommand.java Wed Sep  3 16:15:13 2008
@@ -30,16 +30,12 @@
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 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.BufferedReader;
 import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
 
 /**
- * @todo refactor this & other perforce commands -- most of the invocation and stream
- *       consumer code could be shared
  * @author Mike Perham
  * @version $Id$
  */
@@ -62,30 +58,19 @@
         boolean success = false;
         try
         {
-            Process proc = cl.execute();
-            // TODO find & use a less naive InputStream multiplexer
-            BufferedReader stdout = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            BufferedReader stderr = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
-            String line;
-            while ( ( line = stdout.readLine() ) != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stdout: " + line );
-                }
-                consumer.consumeLine( line );
-            }
-            while ( ( line = stderr.readLine() ) != null )
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stderr: " + line );
-                }
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
-            stderr.close();
-            stdout.close();
-            success = proc.waitFor() == 0;
         }
         catch ( CommandLineException e )
         {
@@ -94,20 +79,6 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " + e.getMessage(), e );
-            }
-        }
-        catch ( InterruptedException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "InterruptedException " + e.getMessage(), e );
-            }
-        }
 
         return new DiffScmResult( cl.toString(), success ? "Diff successful" : "Unable to diff", consumer
             .getOutput(), success );

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java Wed Sep  3 16:15:13 2008
@@ -29,18 +29,16 @@
 import org.apache.maven.scm.provider.perforce.command.PerforceCommand;
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.List;
 
 /**
  * @author Mike Perham
- * @version $Id: PerforceChangeLogCommand.java 264804 2005-08-30 16:09:04Z
- *          evenisse $
+ * @version $Id$
  */
 public class PerforceEditCommand
     extends AbstractEditCommand
@@ -58,28 +56,20 @@
             {
                 getLogger().debug( PerforceScmProvider.clean( "Executing " + cl.toString() ) );
             }
-            Process proc = cl.execute();
-            BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            String line;
-            while ( ( line = br.readLine() ) != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming: " + line );
-                }
-                consumer.consumeLine( line );
-            }
-            // Read errors from STDERR
-            BufferedReader brErr = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
-            while ( ( line = brErr.readLine() ) != null )
+
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stderr: " + line );
-                }
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
-            brErr.close();
         }
         catch ( CommandLineException e )
         {
@@ -88,22 +78,13 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " + e.getMessage(), e );
-            }
-        }
 
         if ( consumer.isSuccess() )
         {
             return new EditScmResult( cl.toString(), consumer.getEdits() );
         }
-        else
-        {
-            return new EditScmResult( cl.toString(), "Unable to edit file(s)", consumer.getErrorMessage(), false );
-        }
+
+        return new EditScmResult( cl.toString(), "Unable to edit file(s)", consumer.getErrorMessage(), false );
     }
 
     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommand.java Wed Sep  3 16:15:13 2008
@@ -19,11 +19,7 @@
  * under the License.
  */
 
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
 import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
 
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
@@ -36,12 +32,12 @@
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 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;
 
 /**
  * @author Mike Perham
- * @version $Id: PerforceChangeLogCommand.java 264804 2005-08-30 16:09:04Z
- *          evenisse $
+ * @version $Id$
  */
 public class PerforceLoginCommand
     extends AbstractLoginCommand
@@ -56,44 +52,29 @@
 
         try
         {
-            Process proc = cl.execute();
-            DataOutputStream dos = new DataOutputStream( proc.getOutputStream() );
             if ( StringUtils.isEmpty( repo.getPassword() ) )
             {
                 throw new ScmException( "password is required for the perforce scm plugin." );
             }
-            dos.writeUTF( repo.getPassword() );
-            dos.close();
-            BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            String line = null;
-            while ( ( line = br.readLine() ) != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming: " + line );
-                }
-                consumer.consumeLine( line );
-            }
-            // Read errors from STDERR
-            BufferedReader brErr = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
-            while ( ( line = brErr.readLine() ) != null )
+
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stderr: " + line );
-                }
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
-            brErr.close();
         }
         catch ( CommandLineException e )
         {
             throw new ScmException( "", e );
         }
-        catch ( IOException e )
-        {
-            throw new ScmException( "", e );
-        }
 
         return new LoginScmResult( cl.toString(), consumer.isSuccess() ? "Login successful" : "Login failed",
                         consumer.getOutput(), consumer.isSuccess() );

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommand.java Wed Sep  3 16:15:13 2008
@@ -29,18 +29,15 @@
 import org.apache.maven.scm.provider.perforce.command.PerforceCommand;
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.List;
 
 /**
  * @author Mike Perham
- * @version $Id: PerforceChangeLogCommand.java 264804 2005-08-30 16:09:04Z
- *          evenisse $
+ * @version $Id$
  */
 public class PerforceRemoveCommand
     extends AbstractRemoveCommand
@@ -54,12 +51,18 @@
         PerforceRemoveConsumer consumer = new PerforceRemoveConsumer();
         try
         {
-            Process proc = cl.execute();
-            BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            String line;
-            while ( ( line = br.readLine() ) != null )
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
         }
         catch ( CommandLineException e )
@@ -69,13 +72,6 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " + e.getMessage(), e );
-            }
-        }
 
         return new RemoveScmResult( cl.toString(), consumer.getRemovals() );
     }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommand.java Wed Sep  3 16:15:13 2008
@@ -31,20 +31,17 @@
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 import org.apache.regexp.RE;
 import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
 /**
  * @author Mike Perham
- * @version $Id: PerforceChangeLogCommand.java 264804 2005-08-30 16:09:04Z
- *          evenisse $
+ * @version $Id$
  */
 public class PerforceStatusCommand
     extends AbstractStatusCommand
@@ -66,11 +63,9 @@
             List scmfiles = createResults( actualLocation, consumer );
             return new StatusScmResult( command.toString(), scmfiles );
         }
-        else
-        {
-            return new StatusScmResult( command.toString(), "Unable to get status", consumer
+
+        return new StatusScmResult( command.toString(), "Unable to get status", consumer
                 .getOutput(), consumer.isSuccess() );
-        }
     }
 
     public static List createResults( String repoPath, PerforceStatusConsumer consumer )
@@ -106,18 +101,20 @@
             {
                 getLogger().debug( PerforceScmProvider.clean( "Executing " + cl.toString() ) );
             }
-            Process proc = cl.execute();
-            BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            String line;
-            while ( ( line = br.readLine() ) != null )
+
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Reading " + line );
-                }
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
-            br.close();
         }
         catch ( CommandLineException e )
         {
@@ -126,13 +123,7 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " + e.getMessage(), e );
-            }
-        }
+
         return cl;
     }
 

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java Wed Sep  3 16:15:13 2008
@@ -30,6 +30,7 @@
 import org.apache.maven.scm.provider.perforce.command.PerforceInfoCommand;
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
 import java.io.BufferedReader;
@@ -41,8 +42,6 @@
 import java.util.List;
 
 /**
- * @todo refactor this & other perforce commands -- most of the invocation and stream
- *       consumer code could be shared
  * @author Mike Perham
  * @version $Id$
  */
@@ -80,11 +79,9 @@
             // Unclear what to pass as the first arg
             return new TagScmResult( "p4 label -i", consumer.getTagged() );
         }
-        else
-        {
-            // Unclear what to pass as the first arg
-            return new TagScmResult( "p4 label -i", "Tag failed", consumer.getOutput(), false );
-        }
+
+        // Unclear what to pass as the first arg
+        return new TagScmResult( "p4 label -i", "Tag failed", consumer.getOutput(), false );
     }
 
     private boolean shouldLock()
@@ -102,29 +99,19 @@
             {
                 getLogger().debug( PerforceScmProvider.clean( "Executing: " + cl.toString() ) );
             }
-            Process proc = cl.execute();
-            // TODO find & use a less naive InputStream multiplexer
-            BufferedReader stdout = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            BufferedReader stderr = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
-            String line;
-            while ( ( line = stdout.readLine() ) != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stdout: " + line );
-                }
-                consumer.consumeLine( line );
-            }
-            while ( ( line = stderr.readLine() ) != null )
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Consuming stderr: " + line );
-                }
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
-            stderr.close();
-            stdout.close();
         }
         catch ( CommandLineException e )
         {
@@ -133,13 +120,6 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " + e.getMessage(), e );
-            }
-        }
     }
 
     private void createLabel( ScmProviderRepository repo, ScmFileSet files, String tag, PerforceTagConsumer consumer,

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommand.java Wed Sep  3 16:15:13 2008
@@ -29,18 +29,15 @@
 import org.apache.maven.scm.provider.perforce.command.PerforceCommand;
 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
 import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.List;
 
 /**
  * @author Mike Perham
- * @version $Id: PerforceChangeLogCommand.java 264804 2005-08-30 16:09:04Z
- *          evenisse $
+ * @version $Id$
  */
 public class PerforceUnEditCommand
     extends AbstractUnEditCommand
@@ -55,12 +52,18 @@
         PerforceUnEditConsumer consumer = new PerforceUnEditConsumer();
         try
         {
-            Process proc = cl.execute();
-            BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            String line;
-            while ( ( line = br.readLine() ) != null )
+            CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+            int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, err );
+
+            if ( exitCode != 0 )
             {
-                consumer.consumeLine( line );
+                String cmdLine = CommandLineUtils.toString( cl.getCommandline() );
+
+                StringBuffer msg = new StringBuffer( "Exit code: " + exitCode + " - " + err.getOutput() );
+                msg.append( '\n' );
+                msg.append( "Command line was:" + cmdLine );
+
+                throw new CommandLineException( msg.toString() );
             }
         }
         catch ( CommandLineException e )
@@ -70,22 +73,13 @@
                 getLogger().error( "CommandLineException " + e.getMessage(), e );
             }
         }
-        catch ( IOException e )
-        {
-            if ( getLogger().isErrorEnabled() )
-            {
-                getLogger().error( "IOException " + e.getMessage(), e );
-            }
-        }
 
         if ( consumer.isSuccess() )
         {
             return new UnEditScmResult( cl.toString(), consumer.getEdits() );
         }
-        else
-        {
-            return new UnEditScmResult( cl.toString(), "Unable to revert", consumer.getOutput(), consumer.isSuccess() );
-        }
+
+        return new UnEditScmResult( cl.toString(), "Unable to revert", consumer.getOutput(), consumer.isSuccess() );
     }
 
     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java?rev=691823&r1=691822&r2=691823&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java Wed Sep  3 16:15:13 2008
@@ -35,14 +35,12 @@
 
 /**
  * @author Mike Perham
- * @version $Id: PerforceChangeLogCommand.java 264804 2005-08-30 16:09:04Z
- *          evenisse $
+ * @version $Id$
  */
 public class PerforceUpdateCommand
     extends AbstractUpdateCommand
     implements PerforceCommand
 {
-
     /** {@inheritDoc} */
     protected UpdateScmResult executeUpdateCommand( ScmProviderRepository repo, ScmFileSet files,
                                                     ScmVersion scmVersion )