The perforce provider should be able to accept complex filespecs using a clientspec rather than the path in the SCM url -----------------------------------------------------------------------------------------------------------------------
Key: SCM-258 URL: http://jira.codehaus.org/browse/SCM-258 Project: Maven SCM Issue Type: Improvement Components: maven-scm-provider-perforce Environment: All OS, Maven 2.x using the SCM plugin to talk to perforce Reporter: Dana Lacoste One of the strengths of perforce is the ability to do fairly complex actions with the clientspec. For example: 1 - Checkout two file structures into one location: //depot1/tree1/... //client/project/tree1 //depot2/tree2/... //client/project/tree2 2 - Rename file structures at checkout time : //depot/tree/sample-configuration.xml //client/tree/configuration.xml The SCM URL format doesn't allow this (and implementing it would be difficult) Currently, the perforce provider doesn't seem to allow a way to use an existing clientspec (all codepaths seem to create a new clientspec based on the URL) If the provider could allow an existing clientspec to define the file structure, this functionality could be enabled. Testing: I don't have any JUnit experience, but I think this could be tested by: 1 - Create a clientspec that defines some complex content, for example: //depot/project/src/... //clientspec/project/src/... //ThirdParty/... //clientspec/project/ThirdParty/... 2 - run "mvn scm:checkout" and all files should be checked out. Implementation Ideas: I can see multiple ways of doing this, depending on the restrictions/conventions required A - Use the existing "bootstrap/target/checkout" dynamic directory structure - Using "p4 client -o" with the given/predefined/assumed clientspec, alter the p4_root (the line containing "Root:") and do a "p4 sync -f" (Definition of the clientspec ideas defined separately below) B - Assume the clientspec has a defined "Root:" and use that for the purposes of "locating" files (needed for tag/editing/checkin purposes) - As I'm only checking out, I really don't know how this would affect a checkin :) C - Separate from above, how to define which clientspec to use: - In the SCM URL, perhaps with scm:perforce:[EMAIL PROTECTED]:port:@clientspec_name (the second @ being a placeholder for a delimiter) - As an environment variable (perhaps the existing maven.scm.perforce.clientspec.name, enabling this functionality (re-use vs. re-create) with a different property - Defined in the settings.xml or in the pom.xml in the SCM configuration properties I'm sure more details will be required, this is only what I've identified within my particular situation. -- 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