You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/07/06 15:23:18 UTC

[maven-scm] branch SCM-991 created (now 07d51d34e)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch SCM-991
in repository https://gitbox.apache.org/repos/asf/maven-scm.git


      at 07d51d34e [SCM-991] GitDiffConsumer cannot parse moved files

This branch includes the following new commits:

     new 07d51d34e [SCM-991] GitDiffConsumer cannot parse moved files

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven-scm] 01/01: [SCM-991] GitDiffConsumer cannot parse moved files

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch SCM-991
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit 07d51d34ec386d527ecc584e67514ff862caca1e
Author: Jean-Noël Rouvignac <jn...@gmail.com>
AuthorDate: Wed Jul 6 17:22:17 2022 +0200

    [SCM-991] GitDiffConsumer cannot parse moved files
    
    This closes #151
---
 .../provider/git/command/diff/GitDiffConsumer.java | 16 ++++++++
 .../git/command/diff/GitDiffConsumerTest.java      | 48 ++++++++++++++++++++++
 .../src/test/resources/git/diff/git-diff3.log      |  4 ++
 .../src/test/resources/git/diff/git-diff4.log      | 14 +++++++
 4 files changed, 82 insertions(+)

diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java
index d452a4e88..b39410cb0 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java
@@ -73,6 +73,12 @@ public class GitDiffConsumer
 
     private static final String INDEX_LINE_TOKEN = "index ";
 
+    private static final String SIMILARITY_INDEX_LINE_TOKEN = "similarity index ";
+
+    private static final String RENAME_FROM_LINE_TOKEN = "rename from ";
+
+    private static final String RENAME_TO_LINE_TOKEN = "rename to ";
+
     private static final String NEW_FILE_MODE_TOKEN = "new file mode ";
 
     private static final String DELETED_FILE_MODE_TOKEN = "deleted file mode ";
@@ -149,6 +155,16 @@ public class GitDiffConsumer
             // skip, though could parse to verify filename, end revision
             patch.append( line ).append( "\n" );
         }
+        else if ( line.startsWith( SIMILARITY_INDEX_LINE_TOKEN ) )
+        {
+            // skip
+            patch.append( line ).append( "\n" );
+        }
+        else if ( line.startsWith( RENAME_FROM_LINE_TOKEN ) || line.startsWith( RENAME_TO_LINE_TOKEN ) )
+        {
+            // skip, though could parse to verify filename
+            patch.append( line ).append( "\n" );
+        }
         else if ( line.startsWith( ADDED_LINE_TOKEN ) || line.startsWith( REMOVED_LINE_TOKEN )
             || line.startsWith( UNCHANGED_LINE_TOKEN ) || line.startsWith( CHANGE_SEPARATOR_TOKEN )
             || line.equals( NO_NEWLINE_TOKEN ) )
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumerTest.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumerTest.java
index e43222bba..7b4e9e3f9 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumerTest.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumerTest.java
@@ -108,6 +108,54 @@ public class GitDiffConsumerTest
         assertTrue( addDiffs.indexOf( "+maven-scm git provider works fine :-)" ) >= 0 );
     }
 
+    @Test
+    public void testLog3Consumer()
+            throws Exception
+    {
+        GitDiffConsumer consumer = new GitDiffConsumer( null );
+
+        File f = getTestFile( "src/test/resources/git/diff/git-diff3.log" );
+
+        ConsumerUtils.consumeFile( f, consumer );
+
+        List<ScmFile> changedFiles = consumer.getChangedFiles();
+
+        assertEquals( 1, changedFiles.size() );
+
+        testScmFile( changedFiles.get( 0 ), "pom.xml", ScmFileStatus.MODIFIED );
+
+        Map<String,CharSequence> differences = consumer.getDifferences();
+        assertNotNull( differences );
+
+        CharSequence addDiffs = differences.get( "pom.xml" );
+        assertNotNull( addDiffs );
+        assertEquals( "", addDiffs.toString() );
+    }
+
+    @Test
+    public void testLog4Consumer()
+            throws Exception
+    {
+        GitDiffConsumer consumer = new GitDiffConsumer( null );
+
+        File f = getTestFile( "src/test/resources/git/diff/git-diff4.log" );
+
+        ConsumerUtils.consumeFile( f, consumer );
+
+        List<ScmFile> changedFiles = consumer.getChangedFiles();
+
+        assertEquals( 1, changedFiles.size() );
+
+        testScmFile( changedFiles.get( 0 ), "pom.xml", ScmFileStatus.MODIFIED );
+
+        Map<String,CharSequence> differences = consumer.getDifferences();
+        assertNotNull( differences );
+
+        StringBuilder addDiffs = new StringBuilder( differences.get( "pom.xml" ) );
+        assertNotNull( addDiffs );
+        assertTrue( addDiffs.indexOf( "+  <!-- test -->" ) >= 0 );
+    }
+
     private void testScmFile( ScmFile fileToTest, String expectedFilePath, ScmFileStatus expectedStatus )
     {
         assertEquals( expectedFilePath, fileToTest.getPath() );
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/git/diff/git-diff3.log b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/git/diff/git-diff3.log
new file mode 100644
index 000000000..8b75613d7
--- /dev/null
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/git/diff/git-diff3.log
@@ -0,0 +1,4 @@
+diff --git a/pom.xml b/pom_moved.xml
+similarity index 100%
+rename from pom.xml
+rename to pom_moved.xml
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/git/diff/git-diff4.log b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/git/diff/git-diff4.log
new file mode 100644
index 000000000..5f3054516
--- /dev/null
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/git/diff/git-diff4.log
@@ -0,0 +1,14 @@
+diff --git a/pom.xml b/pom_moved.xml
+similarity index 99%
+rename from pom.xml
+rename to pom_moved.xml
+index 122a94d8..1e5a80ce 100644
+--- a/pom.xml
++++ b/pom_moved.xml
+@@ -585,5 +585,5 @@
+       </snapshots>
+     </repository>
+   </repositories>
+-
++  <!-- test -->
+ </project>