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