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/15 10:35:16 UTC

svn commit: r356996 - in /maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src: main/java/org/apache/maven/scm/provider/perforce/command/checkout/ test/java/org/apache/maven/scm/provider/perforce/command/checkout/

Author: evenisse
Date: Thu Dec 15 01:35:07 2005
New Revision: 356996

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

Perforce should force sync

Modified:
    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/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommandTest.java

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/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java?rev=356996&r1=356995&r2=356996&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 Thu Dec 15 01:35:07 2005
@@ -194,6 +194,21 @@
 
         command.createArgument().setValue( "-c" + specname );
         command.createArgument().setValue( "sync" );
+        
+        // Use a simple heuristic to determine if we should use the Force flag
+        // on sync.  Forcing sync is a HUGE performance hit but is required in
+        // rare instances where source is somehow deleted.  If the target
+        // directory is completely empty, assume a force is required.  If
+        // not empty, we assume a previous checkout was already done and a normal
+        // sync will suffice.
+        // SCM-110
+        String[] files = workingDirectory.list(); 
+        if ( files == null || files.length == 0 ) 
+        {
+            // We need to force so checkout to an empty directory will work.
+            command.createArgument().setValue( "-f" );
+        }
+        
         // Not sure what to do here. 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

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommandTest.java?rev=356996&r1=356995&r2=356996&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommandTest.java Thu Dec 15 01:35:07 2005
@@ -36,20 +36,20 @@
     public void testGetCommandLine()
         throws Exception
     {
-        testCommandLine( "scm:perforce://depot/projects/pathname", "p4 -ctest-test-maven sync ...@somelabel" );
+        testCommandLine( "scm:perforce://depot/projects/pathname", "p4 -ctest-test-maven sync -f ...@somelabel" );
     }
 
     public void testGetCommandLineWithHost()
         throws Exception
     {
-        testCommandLine( "scm:perforce:a:username@//depot/projects/pathname", "p4 -H a -u username -ctest-test-maven sync ...@somelabel" );
+        testCommandLine( "scm:perforce:a:username@//depot/projects/pathname", "p4 -H a -u username -ctest-test-maven sync -f ...@somelabel" );
     }
 
     public void testGetCommandLineWithHostAndPort()
         throws Exception
     {
         testCommandLine( "scm:perforce:myhost:1234:username@//depot/projects/pathname",
-                         "p4 -H myhost:1234 -u username -ctest-test-maven sync ...@somelabel" );
+                         "p4 -H myhost:1234 -u username -ctest-test-maven sync -f ...@somelabel" );
     }
 
     // ----------------------------------------------------------------------
@@ -60,6 +60,7 @@
         throws Exception
     {
         File workingDirectory = getTestFile( "target/perforce-checkout-command-test" );
+        workingDirectory.mkdirs();
 
         ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
         PerforceScmProviderRepository svnRepository = (PerforceScmProviderRepository) repository