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