You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/12/07 22:08:05 UTC
svn commit: r1211634 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src:
main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/
test/java/org/apache/maven/scm/provider/svn/svnexe/command/chang...
Author: olamy
Date: Wed Dec 7 21:08:04 2011
New Revision: 1211634
URL: http://svn.apache.org/viewvc?rev=1211634&view=rev
Log:
[SCM-649] Enhance SCM changelog model to hold more data about changes
patch regarding svn implementation.
patch modified with using maven codestyle
Submitted by Petr Kozelka.
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumer.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumer.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumer.java?rev=1211634&r1=1211633&r2=1211634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumer.java Wed Dec 7 21:08:04 2011
@@ -21,6 +21,7 @@ package org.apache.maven.scm.provider.sv
import org.apache.maven.scm.ChangeFile;
import org.apache.maven.scm.ChangeSet;
+import org.apache.maven.scm.ScmFileStatus;
import org.apache.maven.scm.log.ScmLogger;
import org.apache.maven.scm.provider.svn.SvnChangeSet;
import org.apache.maven.scm.util.AbstractConsumer;
@@ -239,17 +240,49 @@ public class SvnChangeLogConsumer
{
final String fileinfo = FILE_PATTERN.getParen( 2 );
String name = fileinfo;
+ String originalName = null;
+ String originalRev = null;
final int n = fileinfo.indexOf( " (" );
if ( n > 1 && fileinfo.endsWith( ")" ) )
{
final String origFileInfo = fileinfo.substring( n );
if ( ORIG_FILE_PATTERN.match( origFileInfo ) )
{
- // if original file is present, we must extract only the affected one at the beginning
+ // if original file is present, we must extract the affected one from the beginning
name = fileinfo.substring( 0, n );
+ originalName = ORIG_FILE_PATTERN.getParen( 1 );
+ originalRev = ORIG_FILE_PATTERN.getParen( 2 );
}
}
- currentChange.addFile( new ChangeFile( name, currentRevision ) );
+ final String actionStr = FILE_PATTERN.getParen( 1 );
+ final ScmFileStatus action;
+ if ( "A".equals( actionStr ) )
+ {
+ //TODO: this may even change to MOVED if we later explore whole changeset and find matching DELETED
+ action = originalRev == null ? ScmFileStatus.ADDED : ScmFileStatus.COPIED;
+ }
+ else if ( "D".equals( actionStr ) )
+ {
+ action = ScmFileStatus.DELETED;
+ }
+ else if ( "M".equals( actionStr ) )
+ {
+ action = ScmFileStatus.MODIFIED;
+ }
+ else if ( "R".equals( actionStr ) )
+ {
+ action = ScmFileStatus.UPDATED; //== REPLACED in svn terms
+ }
+ else
+ {
+ action = ScmFileStatus.UNKNOWN;
+ }
+ System.out.println( actionStr + " : " + name );
+ final ChangeFile changeFile = new ChangeFile( name, currentRevision );
+ changeFile.setAction( action );
+ changeFile.setOriginalName( originalName );
+ changeFile.setOriginalRevision( originalRev );
+ currentChange.addFile( changeFile );
status = GET_FILE;
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java?rev=1211634&r1=1211633&r2=1211634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java Wed Dec 7 21:08:04 2011
@@ -21,6 +21,7 @@ package org.apache.maven.scm.provider.sv
import org.apache.maven.scm.ChangeFile;
import org.apache.maven.scm.ChangeSet;
+import org.apache.maven.scm.ScmFileStatus;
import org.apache.maven.scm.log.DefaultLog;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.logging.Logger;
@@ -33,9 +34,11 @@ import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.TimeZone;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
@@ -78,7 +81,7 @@ public class SvnChangeLogConsumerTest
consumeLog( svnLog );
- final ChangeSet entry = (ChangeSet) consumer.getModifications().get( 0 );
+ final ChangeSet entry = consumer.getModifications().get( 0 );
final List changedFiles = entry.getFiles();
final String revision = ( (ChangeFile) changedFiles.get( 0 ) ).getRevision();
@@ -238,6 +241,11 @@ public class SvnChangeLogConsumerTest
out.append( "nb modifications : " + modifications.size() );
+ int origFileCounter = 0;
+
+ // must use *Linked* HashMap to have predictable toString
+ final Map<ScmFileStatus, AtomicInteger> summary = new LinkedHashMap<ScmFileStatus, AtomicInteger>();
+
for ( ChangeSet entry : consumer.getModifications() )
{
@@ -249,6 +257,12 @@ public class SvnChangeLogConsumerTest
for ( ChangeFile file : entry.getFiles() )
{
+ final ScmFileStatus action = file.getAction();
+ if ( !summary.containsKey( action ) )
+ {
+ summary.put( action, new AtomicInteger() );
+ }
+ summary.get( action ).incrementAndGet();
final String fileName = file.getName();
out.append( "File:" + fileName );
@@ -258,11 +272,21 @@ public class SvnChangeLogConsumerTest
// files in this log are known not to contain space
Assert.assertEquals( "Unexpected space found in filename: " + fileName, -1, fileName.indexOf( " " ) );
+
+ if ( file.getOriginalName() != null )
+ {
+ origFileCounter++;
+ }
}
out.append( "==============================" );
}
+ Assert.assertEquals( "Unexpected number of file copy records", 1, origFileCounter );
+
+ Assert.assertEquals( "Action summary differs from expectations",
+ "{modified=626, deleted=56, added=310, copied=1}", summary.toString() );
+
if ( logger.isDebugEnabled() )
{
logger.debug( out.toString() );