diff --git a/changelog/src/main/org/apache/maven/perforcelib/PerforceChangeLogFactory.java b/changelog/src/main/org/apache/maven/perforcelib/PerforceChangeLogFactory.java
index 7db6d59c..168819b2 100644
--- a/changelog/src/main/org/apache/maven/perforcelib/PerforceChangeLogFactory.java
+++ b/changelog/src/main/org/apache/maven/perforcelib/PerforceChangeLogFactory.java
@@ -28,24 +28,28 @@ import org.apache.maven.changelog.ChangeLogParser;
* It expects the repository connection element in the POM to be of
* this form: scm:perforce[:P4PORT]:FILESPEC. If
* the P4PORT is omitted, the corresponding environment variable will
- * be used. The FILESPEC should use the appropriate Perforce
- * wildcards to represent all of the project's files. For example,
+ * be used. The FILESPEC should use "depot syntax" with the
+ * appropriate Perforce wildcards to represent all of the project's
+ * files, i.e. '...'
*
+ * The repository URL element should refer to a p4web
+ * instance. The portion of the URL following the host:port should
+ * match the FILESPEC in the repository connection element, sans the
+ * '...'. It must end with a '/'.
+ *
+ * For example,
*
* <repository> * <connection> * scm:perforce:some.host.com:1666://depot/projects/maven/... * </connection> * <url> - * http://public.perforce.com:8080 + * http://public.perforce.com:8080//depot/projects/maven/ * </url> * </repository> ** - * The repository url element should reference the root context of a p4web - * instance. - * * @author Jim Crossley * @version $Id: */ diff --git a/changelog/src/main/org/apache/maven/perforcelib/PerforceChangeLogParser.java b/changelog/src/main/org/apache/maven/perforcelib/PerforceChangeLogParser.java index 83e83a72..496954d6 100644 --- a/changelog/src/main/org/apache/maven/perforcelib/PerforceChangeLogParser.java +++ b/changelog/src/main/org/apache/maven/perforcelib/PerforceChangeLogParser.java @@ -91,6 +91,9 @@ class PerforceChangeLogParser implements ChangeLogParser /** the before date */ private Date beforeDate; + /** The depot filespec will be stripped from each filename */ + private int prefixLength; + private static final String pattern = "^\\.\\.\\. #(\\d+) " + // revision number "change (\\d+) .* " + // changelist number @@ -119,6 +122,9 @@ class PerforceChangeLogParser implements ChangeLogParser { this.changeLog = changeLog; setDateRange(); + String conn = changeLog.getRepositoryConnection(); + String filespec = conn.substring(conn.lastIndexOf(':')+1); + this.prefixLength = 1 + filespec.lastIndexOf ('/'); } /** @@ -171,8 +177,6 @@ class PerforceChangeLogParser implements ChangeLogParser */ private void addEntry(ChangeLogEntry entry, ChangeLogFile file) { - System.out.println(); - System.out.println(entry.toXML()); if (beforeDate != null) { if (entry.getDate().before(beforeDate)) { return; @@ -197,7 +201,7 @@ class PerforceChangeLogParser implements ChangeLogParser private void processGetRevision(String line) { if (line.startsWith(FILE_BEGIN_TOKEN)) { - currentFile = line; + currentFile = line.substring (this.prefixLength); return; } diff --git a/changelog/src/test/org/apache/maven/perforcelib/PerforceChangeLogParserTest.java b/changelog/src/test/org/apache/maven/perforcelib/PerforceChangeLogParserTest.java index 7a4d2005..653adf86 100644 --- a/changelog/src/test/org/apache/maven/perforcelib/PerforceChangeLogParserTest.java +++ b/changelog/src/test/org/apache/maven/perforcelib/PerforceChangeLogParserTest.java @@ -23,6 +23,7 @@ import java.util.List; import junit.framework.TestCase; import org.apache.maven.changelog.ChangeLogEntry; +import org.apache.maven.changelog.ChangeLog; /** * Test cases for {@link PerforceChangeLogParser} @@ -58,6 +59,9 @@ public class PerforceChangeLogParserTest extends TestCase assertNotNull("The system property basedir was not defined.", baseDir); testFile = baseDir + "/src/test-resources/perforcelib/perforcelog.txt"; parser = new PerforceChangeLogParser(); + ChangeLog changeLog = new ChangeLog(); + changeLog.setRepositoryConnection ("scm:perforce://depot/test/..."); + parser.init (changeLog); } /** @@ -79,7 +83,7 @@ public class PerforceChangeLogParserTest extends TestCase "\t\t\n" + "\t\t