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 2005/12/01 21:56:38 UTC
svn commit: r351467 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update:
PerforceUpdateCommand.java PerforceUpdateConsumer.java
Author: evenisse
Date: Thu Dec 1 12:56:32 2005
New Revision: 351467
URL: http://svn.apache.org/viewcvs?rev=351467&view=rev
Log:
PR: SCM-92
Submitted by: Mike Perham
Add working directory support to Perforce update command
Removed:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateConsumer.java
Modified:
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/update/PerforceUpdateCommand.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java?rev=351467&r1=351466&r2=351467&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 Thu Dec 1 12:56:32 2005
@@ -16,23 +16,18 @@
* limitations under the License.
*/
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.command.changelog.ChangeLogCommand;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
import org.apache.maven.scm.command.update.AbstractUpdateCommand;
import org.apache.maven.scm.command.update.UpdateScmResult;
import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.perforce.PerforceScmProvider;
import org.apache.maven.scm.provider.perforce.command.PerforceCommand;
import org.apache.maven.scm.provider.perforce.command.changelog.PerforceChangeLogCommand;
-import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
-import org.codehaus.plexus.util.cli.CommandLineException;
-import org.codehaus.plexus.util.cli.Commandline;
+import org.apache.maven.scm.provider.perforce.command.checkout.PerforceCheckOutCommand;
/**
* @author Mike Perham
@@ -47,52 +42,24 @@
protected UpdateScmResult executeUpdateCommand( ScmProviderRepository repo, ScmFileSet files, String tag )
throws ScmException
{
- Commandline cl = createCommandLine( (PerforceScmProviderRepository) repo, files.getBasedir(), tag );
- PerforceUpdateConsumer consumer = new PerforceUpdateConsumer();
- try
- {
- Process proc = cl.execute();
- BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
- String line = null;
- while ( ( line = br.readLine() ) != null )
- {
- consumer.consumeLine( line );
- }
- }
- catch ( CommandLineException e )
- {
- e.printStackTrace();
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
-
- if ( consumer.isSuccess() )
- {
- return new UpdateScmResult( cl.toString(), consumer.getUpdates() );
- }
- else
- {
- return new UpdateScmResult( cl.toString(), "Unable to sync", consumer.getOutput(), consumer.isSuccess() );
- }
- }
-
- public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory, String tag )
- {
- Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
-
- command.createArgument().setValue( "sync" );
- // I'm unclear whether we should be
- // sync'ing each file individually to the label or just sync the
- // entire contents of the workingDir. I'm going to assume the
- // latter until the exact semantics are clearer.
- command.createArgument().setValue( "..." + ( tag != null ? "@" + tag : "" ) );
- return command;
+ // In Perforce, there is no difference between update and checkout.
+ // Here we just run the checkout command and map the result onto an
+ // UpdateScmResult.
+ PerforceCheckOutCommand command = new PerforceCheckOutCommand();
+ command.setLogger( getLogger() );
+ CommandParameters params = new CommandParameters();
+ params.setString( CommandParameter.TAG, tag );
+
+ CheckOutScmResult cosr = (CheckOutScmResult) command.execute( repo, files, params );
+
+ UpdateScmResult usr = new UpdateScmResult( cosr.getCommandLine(), cosr.getProviderMessage(), cosr
+ .getCommandOutput(), cosr.isSuccess() );
+ usr.setChanges( cosr.getCheckedOutFiles() );
+ return usr;
}
protected ChangeLogCommand getChangeLogCommand()
{
return new PerforceChangeLogCommand();
}
-}
\ No newline at end of file
+}