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() );