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/11/29 10:36:48 UTC

svn commit: r349685 - in /maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command: checkin/PerforceCheckInCommand.java status/PerforceStatusCommand.java tag/PerforceTagCommand.java

Author: evenisse
Date: Tue Nov 29 01:36:42 2005
New Revision: 349685

URL: http://svn.apache.org/viewcvs?rev=349685&view=rev
Log:
PR: SCM-79
Submitted by: Mike Perham

Patch to update various commands so 'release:prepare' now works

Modified:
    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/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

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/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkin/PerforceCheckInCommand.java?rev=349685&r1=349684&r2=349685&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 Tue Nov 29 01:36:42 2005
@@ -21,6 +21,9 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
@@ -51,23 +54,30 @@
         PerforceCheckInConsumer consumer = new PerforceCheckInConsumer();
         try
         {
+            getLogger().debug( "Executing: " + cl.toString() );
             Process proc = cl.execute();
-            DataOutputStream dos = new DataOutputStream( proc.getOutputStream() );
-            dos.writeUTF( createChangeListSpecification( (PerforceScmProviderRepository) repo, files, message ) );
+            OutputStream out = proc.getOutputStream();
+            DataOutputStream dos = new DataOutputStream( out );
+            String changes = createChangeListSpecification( (PerforceScmProviderRepository) repo, files, message );
+            getLogger().debug( "Sending changelist:\n" + changes );
+            dos.write( changes.getBytes() );
+            dos.close();
+            out.close();
             BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
             String line = null;
             while ( ( line = br.readLine() ) != null )
             {
+                getLogger().debug( "Consuming: " + line );
                 consumer.consumeLine( line );
             }
         }
         catch ( CommandLineException e )
         {
-            e.printStackTrace();
+            getLogger().error( e );
         }
         catch ( IOException e )
         {
-            e.printStackTrace();
+            getLogger().error( e );
         }
 
         return new CheckInScmResult( cl.toString(), consumer.isSuccess() ? "Checkin successful" : "Unable to submit",
@@ -94,6 +104,7 @@
         buf.append( "Files:" ).append( NEWLINE );
         try
         {
+            Set dupes = new HashSet();
             File workingDir = files.getBasedir();
             String candir = workingDir.getCanonicalPath();
             File[] fs = files.getFiles();
@@ -109,6 +120,15 @@
                 // to that prefix.
                 // "//depot/some/project/src/foo.xml"
                 String canfile = file.getCanonicalPath();
+                if ( dupes.contains( canfile ) )
+                {
+                    // XXX I am seeing duplicate files in the ScmFileSet.
+                    // I don't know why this is but we have to weed them out
+                    // or Perforce will barf
+                    System.err.println( "Skipping duplicate file: " + file );
+                    continue;
+                }
+                dupes.add( canfile );
                 if ( canfile.startsWith( candir ) )
                 {
                     canfile = canfile.substring( candir.length() + 1 );

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/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommand.java?rev=349685&r1=349684&r2=349685&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 Tue Nov 29 01:36:42 2005
@@ -96,13 +96,13 @@
         Commandline cl = createOpenedCommandLine( prepo, files.getBasedir() );
         try
         {
-            getLogger().info("Executing " + cl.toString());
+            getLogger().debug("Executing " + cl.toString());
             Process proc = cl.execute();
             BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
             String line = null;
             while ( ( line = br.readLine() ) != null )
             {
-                getLogger().info("Reading " + line);
+                getLogger().debug("Reading " + line);
                 consumer.consumeLine( line );
             }
             br.close();

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/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java?rev=349685&r1=349684&r2=349685&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 Tue Nov 29 01:36:42 2005
@@ -21,6 +21,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
 
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
@@ -48,10 +49,7 @@
         throws ScmException
     {
         PerforceTagConsumer consumer = new PerforceTagConsumer();
-        if ( consumer.isSuccess() )
-        {
-            createLabel( repo, files, tag, consumer );
-        }
+        createLabel( repo, files, tag, consumer );
         if ( consumer.isSuccess() )
         {
             syncLabel( repo, files, tag, consumer );
@@ -59,36 +57,38 @@
 
         if ( consumer.isSuccess() )
         {
-            // TODO Unclear what to pass as the first arg
+            // Unclear what to pass as the first arg
             return new TagScmResult( "p4 label -i", consumer.getTagged() );
         }
         else
         {
-            // TODO Unclear what to pass as the first arg
+            // Unclear what to pass as the first arg
             return new TagScmResult( "p4 label -i", "Tag failed", consumer.getOutput(), false );
         }
     }
 
     private void syncLabel( ScmProviderRepository repo, ScmFileSet files, String tag, PerforceTagConsumer consumer )
     {
-        Commandline cl = createLabelCommandLine( (PerforceScmProviderRepository) repo, files.getBasedir(), files, tag );
+        Commandline cl = createLabelsyncCommandLine( (PerforceScmProviderRepository) repo, files.getBasedir(), files, tag );
         try
         {
+            getLogger().debug( "Executing: " + cl.toString() );
             Process proc = cl.execute();
             BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
             String line = null;
             while ( ( line = br.readLine() ) != null )
             {
+                getLogger().debug( "Consuming: " + line );
                 consumer.consumeLine( line );
             }
         }
         catch ( CommandLineException e )
         {
-            e.printStackTrace();
+            getLogger().error( e );
         }
         catch ( IOException e )
         {
-            e.printStackTrace();
+            getLogger().error( e );
         }
     }
 
@@ -97,23 +97,29 @@
         Commandline cl = createLabelCommandLine( (PerforceScmProviderRepository) repo, files.getBasedir(), files, tag );
         try
         {
+            getLogger().debug( "Executing: " + cl.toString() );
             Process proc = cl.execute();
-            DataOutputStream dos = new DataOutputStream( proc.getOutputStream() );
-            dos.writeUTF( createLabelSpecification( (PerforceScmProviderRepository) repo, files, tag ) );
+            OutputStream out = proc.getOutputStream();
+            DataOutputStream dos = new DataOutputStream( out );
+            String label = createLabelSpecification( (PerforceScmProviderRepository) repo, files, tag );
+            dos.write( label.getBytes() );
+            dos.close();
+            out.close();
             BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
             String line = null;
             while ( ( line = br.readLine() ) != null )
             {
+                getLogger().debug( "Consuming: " + line );
                 consumer.consumeLine( line );
             }
         }
         catch ( CommandLineException e )
         {
-            e.printStackTrace();
+            getLogger().error( e );
         }
         catch ( IOException e )
         {
-            e.printStackTrace();
+            getLogger().error( e );
         }
     }