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 mp...@apache.org on 2007/04/25 00:46:56 UTC
svn commit: r532125 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src:
main/java/org/apache/maven/scm/provider/perforce/
main/java/org/apache/maven/scm/provider/perforce/command/
main/java/org/apache/maven/scm/provider/perforce/...
Author: mperham
Date: Tue Apr 24 15:46:55 2007
New Revision: 532125
URL: http://svn.apache.org/viewvc?view=rev&rev=532125
Log:
PR: SCM-301
Fixes for Perforce provider in Continuum
Submitted by: Raphael PETIT
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java
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/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommandTest.java
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java?view=diff&rev=532125&r1=532124&r2=532125
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java Tue Apr 24 15:46:55 2007
@@ -19,6 +19,7 @@
* under the License.
*/
+
import org.apache.maven.scm.CommandParameters;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
@@ -56,6 +57,8 @@
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.cli.Commandline;
+import sun.security.action.GetLongAction;
+
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
@@ -336,10 +339,10 @@
Created by maven-scm-provider-perforce
*/
- public static String createClientspec( PerforceScmProviderRepository repo, File workDir, String repoPath )
+ public static String createClientspec(ScmLogger logger, PerforceScmProviderRepository repo, File workDir, String repoPath )
{
- String clientspecName = getClientspecName( repo, workDir );
- String userName = getUsername( repo );
+ String clientspecName = getClientspecName( logger, repo, workDir );
+ String userName = getUsername( logger, repo );
String rootDir;
try
@@ -367,14 +370,21 @@
public static final String DEFAULT_CLIENTSPEC_PROPERTY = "maven.scm.perforce.clientspec.name";
- public static String getClientspecName( PerforceScmProviderRepository repo, File workDir )
+ public static String getClientspecName( ScmLogger logger,PerforceScmProviderRepository repo, File workDir )
{
- return System.getProperty( DEFAULT_CLIENTSPEC_PROPERTY, generateDefaultClientspecName( repo, workDir ) );
+ String def = generateDefaultClientspecName( logger, repo, workDir );
+ // until someone put clearProperty in DefaultContinuumScm.getScmRepository( Project , boolean )
+ String l = System.getProperty( DEFAULT_CLIENTSPEC_PROPERTY, def );
+ if ( l == null || "".equals( l.trim() ) )
+ {
+ return def;
+ }
+ return l;
}
- private static String generateDefaultClientspecName( PerforceScmProviderRepository repo, File workDir )
+ private static String generateDefaultClientspecName(ScmLogger logger, PerforceScmProviderRepository repo, File workDir )
{
- String username = getUsername( repo );
+ String username = getUsername( logger, repo );
String hostname;
String path;
try
@@ -394,9 +404,9 @@
return username + "-" + hostname + "-MavenSCM-" + path;
}
- private static String getUsername( PerforceScmProviderRepository repo )
+ private static String getUsername( ScmLogger logger, PerforceScmProviderRepository repo )
{
- String username = PerforceInfoCommand.getInfo( null, repo ).getEntry( "User name" );
+ String username = PerforceInfoCommand.getInfo( logger, repo ).getEntry( "User name" );
if ( username == null )
{
// os user != perforce user
@@ -440,7 +450,12 @@
if ( pom.exists() )
{
loc = where.getDepotLocation( pom );
- if ( loc.endsWith( "/pom.xml" ) )
+ if ( loc == null )
+ {
+ loc = repo.getPath();
+ log.debug( "cannot find depot => using " + loc );
+ }
+ else if ( loc.endsWith( "/pom.xml" ) )
{
loc = loc.substring( 0, loc.length() - "/pom.xml".length() );
log.debug( "Actual POM location: " + loc );
@@ -497,4 +512,4 @@
return live.booleanValue();
}
-}
\ No newline at end of file
+}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java?view=diff&rev=532125&r1=532124&r2=532125
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommand.java Tue Apr 24 15:46:55 2007
@@ -24,6 +24,7 @@
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmResult;
import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.log.ScmLogger;
import org.apache.maven.scm.provider.ScmProviderRepository;
import org.apache.maven.scm.provider.perforce.PerforceScmProvider;
import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
@@ -66,9 +67,9 @@
private Map entries = null;
- public static PerforceInfoCommand getInfo( AbstractCommand cmd, PerforceScmProviderRepository repo )
+ public static PerforceInfoCommand getInfo( ScmLogger logger, PerforceScmProviderRepository repo )
{
- return getSingleton( cmd, repo );
+ return getSingleton( logger, repo );
}
public String getEntry( String key )
@@ -76,15 +77,15 @@
return (String) entries.get( key );
}
- private static synchronized PerforceInfoCommand getSingleton( AbstractCommand cmd,
+ private static synchronized PerforceInfoCommand getSingleton( ScmLogger logger,
PerforceScmProviderRepository repo )
{
if ( singleton == null )
{
PerforceInfoCommand pic = new PerforceInfoCommand();
- if ( cmd != null )
+ if ( logger != null )
{
- pic.setLogger( cmd.getLogger() );
+ pic.setLogger( logger );
}
try
{
@@ -108,15 +109,11 @@
return null;
}
- boolean log = getLogger() != null;
try
{
Commandline command = PerforceScmProvider.createP4Command( (PerforceScmProviderRepository) repo, null );
command.createArgument().setValue( "info" );
- if ( log )
- {
- getLogger().debug( PerforceScmProvider.clean( "Executing: " + command.toString() ) );
- }
+ getLogger().debug( PerforceScmProvider.clean( "Executing: " + command.toString() ) );
Process proc = command.execute();
BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
String line;
@@ -126,11 +123,22 @@
int idx = line.indexOf( ':' );
if ( idx == -1 )
{
- throw new IllegalStateException( "Unexpected results from 'p4 info' command: " + line );
+ if ( line.indexOf( "Client unknown." ) == -1 )
+ {
+ throw new IllegalStateException( "Unexpected results from 'p4 info' command: " + line );
+ }
+ else
+ {
+ getLogger().debug( "Cannot find client.");
+ entries.put( "Client root", "" );
+ }
+ }
+ else
+ {
+ String key = line.substring( 0, idx );
+ String value = line.substring( idx + 1 ).trim();
+ entries.put( key, value );
}
- String key = line.substring( 0, idx );
- String value = line.substring( idx + 1 ).trim();
- entries.put( key, value );
}
}
catch ( CommandLineException e )
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java?view=diff&rev=532125&r1=532124&r2=532125
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogCommand.java Tue Apr 24 15:46:55 2007
@@ -53,13 +53,13 @@
String datePattern )
throws ScmException
{
- if ( branch != null || StringUtils.isNotEmpty( branch.getName() ) )
+ if ( branch != null && StringUtils.isNotEmpty( branch.getName() ) )
{
throw new ScmException( "This SCM doesn't support branches." );
}
PerforceScmProviderRepository p4repo = (PerforceScmProviderRepository) repo;
- String clientspec = PerforceScmProvider.getClientspecName( p4repo, fileSet.getBasedir() );
+ String clientspec = PerforceScmProvider.getClientspecName( getLogger(), p4repo, fileSet.getBasedir() );
Commandline cl = createCommandLine( p4repo, fileSet.getBasedir(), clientspec );
String location = PerforceScmProvider.getRepoPath( getLogger(), p4repo, fileSet.getBasedir() );
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/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java?view=diff&rev=532125&r1=532124&r2=532125
==============================================================================
--- 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 Tue Apr 24 15:46:55 2007
@@ -69,7 +69,7 @@
actualLocation = PerforceScmProvider.getRepoPath( getLogger(), prepo, files.getBasedir() );
- String specname = PerforceScmProvider.getClientspecName( prepo, workingDirectory );
+ String specname = PerforceScmProvider.getClientspecName(getLogger(), prepo, workingDirectory );
PerforceCheckOutConsumer consumer = new PerforceCheckOutConsumer( specname, actualLocation );
getLogger().info( "Checkout working directory: " + workingDirectory );
Commandline cl = null;
@@ -88,7 +88,7 @@
// Write clientspec to STDIN
OutputStream out = proc.getOutputStream();
DataOutputStream dos = new DataOutputStream( out );
- String client = PerforceScmProvider.createClientspec( prepo, workingDirectory, actualLocation );
+ String client = PerforceScmProvider.createClientspec(getLogger(), prepo, workingDirectory, actualLocation );
getLogger().debug( "Updating clientspec:\n" + client );
dos.write( client.getBytes() );
dos.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/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java?view=diff&rev=532125&r1=532124&r2=532125
==============================================================================
--- 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 Apr 24 15:46:55 2007
@@ -194,10 +194,10 @@
{
// I have no idea why but Perforce doesn't default the owner to the current user.
// Since the user is not explicitly set, we use 'p4 info' to query for the current user.
- username = PerforceInfoCommand.getInfo( this, repo ).getEntry( "User name" );
+ username = PerforceInfoCommand.getInfo( getLogger(), repo ).getEntry( "User name" );
}
buf.append( "Owner: " ).append( username ).append( NEWLINE );
buf.append( "Options: " ).append( lock ? "" : "un" ).append( "locked" ).append( NEWLINE );
return buf.toString();
}
-}
\ No newline at end of file
+}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommandTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommandTest.java?view=diff&rev=532125&r1=532124&r2=532125
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/PerforceInfoCommandTest.java Tue Apr 24 15:46:55 2007
@@ -45,11 +45,11 @@
if ( PerforceScmProvider.isLive() )
{
- assertNotNull( PerforceInfoCommand.getInfo( cmd, p4Repo ).getEntry( "User name" ) );
- assertNotNull( PerforceInfoCommand.getInfo( cmd, p4Repo ).getEntry( "Client root" ) );
- assertNotNull( PerforceInfoCommand.getInfo( cmd, p4Repo ).getEntry( "Client name" ) );
- assertNotNull( PerforceInfoCommand.getInfo( cmd, p4Repo ).getEntry( "Client host" ) );
- assertNull( PerforceInfoCommand.getInfo( cmd, p4Repo ).getEntry( "foobar" ) );
+ assertNotNull( PerforceInfoCommand.getInfo( prov.getLogger(), p4Repo ).getEntry( "User name" ) );
+ assertNotNull( PerforceInfoCommand.getInfo( prov.getLogger(), p4Repo ).getEntry( "Client root" ) );
+ assertNotNull( PerforceInfoCommand.getInfo( prov.getLogger(), p4Repo ).getEntry( "Client name" ) );
+ assertNotNull( PerforceInfoCommand.getInfo( prov.getLogger(), p4Repo ).getEntry( "Client host" ) );
+ assertNull( PerforceInfoCommand.getInfo( prov.getLogger(), p4Repo ).getEntry( "foobar" ) );
}
}
}