[ http://jira.codehaus.org/browse/SCM-269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=203948#action_203948 ]
Cliff Evans commented on SCM-269: --------------------------------- To make this work the Repo path in the Clientspec needs to be quoted. Changing the createClientspec method in the org/apache/maven/scm/provider/perforce/PerforceScmProvider.java file to that shown below fixes the issue. (I've changed the style of the section I changed to make it standout more.) {noformat} /* * Clientspec name can be overridden with the system property below. I don't * know of any way for this code to get access to maven's settings.xml so this * is the best I can do. * * Sample clientspec: Client: mperham-mikeperham-dt-maven Root: d:\temp\target Owner: mperham View: //depot/sandbox/mperham/tsa/tsa-domain/... //mperham-mikeperham-dt-maven/... Description: Created by maven-scm-provider-perforce */ public static String createClientspec( ScmLogger logger, PerforceScmProviderRepository repo, File workDir, String repoPath ) { String clientspecName = getClientspecName( logger, repo, workDir ); String userName = getUsername( logger, repo ); String rootDir; try { // SCM-184 rootDir = workDir.getCanonicalPath(); } catch ( IOException ex ) { //getLogger().error("Error getting canonical path for working directory: " + workDir, ex); rootDir = workDir.getAbsolutePath(); } StringBuffer buf = new StringBuffer(); buf.append( "Client: " ).append( clientspecName ).append( NEWLINE ); buf.append( "Root: " ).append( rootDir ).append( NEWLINE ); buf.append( "Owner: " ).append( userName ).append( NEWLINE ); // SCM-269 buf.append( "View:" ).append( NEWLINE ) .append( "\t\"" ).append( PerforceScmProvider.getCanonicalRepoPath( repoPath ) ) .append( "\" //" ).append( clientspecName ).append( "/..." ).append( NEWLINE ); buf.append( "Description:" ).append( NEWLINE ); buf.append( "\t" ).append( "Created by maven-scm-provider-perforce" ).append( NEWLINE ); return buf.toString(); } {noformat} A unit test for it might look something like: {noformat} public void testCreateClientSpec () throws Exception { File workDir = new File ( "/work/directory" ); ScmRepository repo = makeScmRepository( "scm:perforce:host://depot/projects/path name" ); PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository(); String cs = createClientspec ( null, p4Repo, workDir, "//depot/projects/path name" ); assertTrue( cs.contains ( "\"//depot/projects/path name/...\"" ); } {noformat} but I haven't tested this since I don't have access to the SVN repo other than through a browser. Paranoid SAs. Regards, Cliff > Perforce support doesn't work when there's a space in the local path > -------------------------------------------------------------------- > > Key: SCM-269 > URL: http://jira.codehaus.org/browse/SCM-269 > Project: Maven SCM > Issue Type: Bug > Components: maven-scm-provider-perforce > Affects Versions: 1.0-beta-4 > Reporter: David Jackman > Assignee: Mike Perham > Fix For: future > > > Create a view of a Maven project in Perforce in a local directory whose path > contains a space. Perform some SCM goal (I was trying to scm:update). It > won't work. The error message is very cryptic ("Unable to sync. Are you > logged in?"). From the looks of it, the client command (which is run just > before the sync command) has problems, but these problems aren't reported. I > think the main problem is the fact that the local path is used in the client > name, and client names can't contain spaces. Other elements of the client > (root and view) also will contain spaces, but I don't know if Perforce has a > problem with these. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira