Author: olamy
Date: Mon Feb 28 23:16:57 2011
New Revision: 1075582
URL: http://svn.apache.org/viewvc?rev=1075582&view=rev
Log:
[SCM-611] AccuRev - call replica sync before export
Submitted by Grant Gardner
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/ErrorConsumer.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommandTest.java
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java?rev=1075582&r1=1075581&r2=1075582&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java
Mon Feb 28 23:16:57 2011
@@ -282,4 +282,7 @@ public interface AccuRev
String getClientVersion()
throws AccuRevException;
+ boolean syncReplica()
+ throws AccuRevException;
+
}
\ No newline at end of file
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java?rev=1075582&r1=1075581&r2=1075582&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
Mon Feb 28 23:16:57 2011
@@ -744,4 +744,10 @@ public class AccuRevCommandLine
}
+ public boolean syncReplica()
+ throws AccuRevException
+ {
+ return executeCommandLine( new String[] { "replica", "sync" } );
+ }
+
}
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/ErrorConsumer.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/ErrorConsumer.java?rev=1075582&r1=1075581&r2=1075582&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/ErrorConsumer.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/ErrorConsumer.java
Mon Feb 28 23:16:57 2011
@@ -29,6 +29,7 @@ final class ErrorConsumer
{
private static final Pattern[] SKIPPED_WARNINGS = {
+ Pattern.compile( ".*replica sync on the master server.*"),
Pattern.compile( "No elements selected.*" ),
Pattern.compile( "You are not in a directory.*" ),
Pattern.compile( "Note.*" ),
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommand.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommand.java?rev=1075582&r1=1075581&r2=1075582&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommand.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommand.java
Mon Feb 28 23:16:57 2011
@@ -72,6 +72,9 @@ public class AccuRevExportCommand
String.format( "Ignoring transaction id %s,
Export can only extract current sources",
transactionId ) );
transactionId = "now";
+ } else {
+ //We might be heading to a transaction id that is not yet
available on a replica
+ accuRev.syncReplica();
}
boolean removedWorkspace = false;
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommandTest.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommandTest.java?rev=1075582&r1=1075581&r2=1075582&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommandTest.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/export/AccuRevExportCommandTest.java
Mon Feb 28 23:16:57 2011
@@ -81,6 +81,37 @@ public class AccuRevExportCommandTest
assertHasScmFile( result.getExportedFiles(), "exported/file",
ScmFileStatus.CHECKED_OUT );
}
+
+ @Test
+ public void testExportToVersion490()
+ throws Exception
+ {
+ // info defaults to no workspace...
+ info.setWorkSpace( null );
+
+ when( accurev.info( basedir ) ).thenReturn( info );
+
+ // A version that does not support pop -t
+ when( accurev.getClientVersion()).thenReturn( "4.9.0" );
+
+ List<File> poppedFiles = Collections.singletonList( new File(
"exported/file" ) );
+ when(
+ accurev.popExternal( eq( basedir ), eq( "mySnapShot" ), eq(
"676" ),
+ (Collection<File>) argThat( hasItem( new
File( "/./project/dir" ) ) ) ) ).thenReturn(
+
poppedFiles );
+
+ AccuRevExportCommand command = new AccuRevExportCommand( getLogger() );
+
+ CommandParameters params = new CommandParameters();
+ params.setScmVersion( CommandParameter.SCM_VERSION, new ScmTag(
"mySnapShot/676" ) );
+
+ ExportScmResult result = command.export( repo, new ScmFileSet( basedir
), params );
+
+ assertTrue( result.isSuccess() );
+ assertHasScmFile( result.getExportedFiles(), "exported/file",
ScmFileStatus.CHECKED_OUT );
+ verify( accurev).syncReplica();
+
+ }
@Test
public void testExportVersionOutSideWorkspace()
throws Exception