Index: src/test/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogConsumerTest.java =================================================================== --- src/test/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogConsumerTest.java (révision 559850) +++ src/test/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogConsumerTest.java (copie de travail) @@ -55,8 +55,8 @@ } ArrayList entries = new ArrayList( consumer.getModifications() ); - assertEquals( "Wrong number of entries returned", 9, entries.size() ); - ChangeSet entry = (ChangeSet) entries.get( 0 ); + assertEquals( "Wrong number of entries returned", 7, entries.size() ); + ChangeSet entry = (ChangeSet) entries.get(2); assertEquals( "jim", entry.getAuthor() ); assertEquals( "demo/demo.c", ( (ChangeFile) entry.getFiles().get( 0 ) ).getName() ); assertEquals( "2003-10-01", entry.getDateFormatted() ); Index: src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogConsumer.java =================================================================== --- src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogConsumer.java (révision 559850) +++ src/main/java/org/apache/maven/scm/provider/perforce/command/changelog/PerforceChangeLogConsumer.java (copie de travail) @@ -21,6 +21,7 @@ import org.apache.maven.scm.ChangeFile; import org.apache.maven.scm.ChangeSet; +import org.apache.maven.scm.ScmException; import org.apache.maven.scm.log.ScmLogger; import org.apache.maven.scm.util.AbstractConsumer; import org.apache.regexp.RE; @@ -28,6 +29,7 @@ import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; /** @@ -130,9 +132,34 @@ // // ---------------------------------------------------------------------- - public List getModifications() + public List getModifications() throws ScmException { - return entries; + + // Here there are one entry for each couple (changelist,file). We merge + // entries to have only one entry per changelist + + // Date > ChangeSet + HashMap groupedEntries = new HashMap(); + for (int i = 0; i < entries.size(); i++) { + ChangeSet cs = (ChangeSet) entries.get(i); + ChangeSet hit = (ChangeSet) groupedEntries.get(cs.getDate()); + if (hit != null) { + if (cs.getFiles().size() != 1) { + throw new ScmException( + "Merge of entries failed. Bad entry size: " + + cs.getFiles().size()); + } + hit.addFile((ChangeFile) cs.getFiles().get(0)); + } else { + groupedEntries.put(cs.getDate(), cs); + } + } + + ArrayList result = new ArrayList(); + result.addAll(groupedEntries.values()); + + return result; + } // ----------------------------------------------------------------------