[ 
https://issues.apache.org/jira/browse/SCM-977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17539788#comment-17539788
 ] 
ASF GitHub Bot commented on SCM-977:
------------------------------------

michael-o commented on code in PR #135:
URL: https://github.com/apache/maven-scm/pull/135#discussion_r877513964


##########
maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/changelog/GitChangeLogConsumerTest.java:
##########
@@ -172,4 +173,72 @@ public void testConsumer2()
         assertTrue( cf.getRevision() != null && cf.getRevision().length() > 0 
);
     }
 
+    public void testGitLogConsumer3()
+            throws Exception
+    {
+        GitChangeLogConsumer consumer = new GitChangeLogConsumer( new 
DefaultLog(), null );
+
+        File f = getTestFile( 
"/src/test/resources/git/changelog/gitlog3.gitlog" );
+
+        ConsumerUtils.consumeFile( f, consumer );
+
+        List<ChangeSet> modifications = consumer.getModifications();
+
+        assertEquals( 10, modifications.size() );
+
+        SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss Z" );
+        sdf.setTimeZone( TimeZone.getTimeZone( "GMT" ) );

Review Comment:
   This is error-prone and will likely fail. Git, unfortunately, stores 
timestamp and offset. You never know in which offset the output will be because 
it depends on the author's/committer's system offset. Ideally, the pattern 
autorecognizes the offset.
   
   WDYT?



##########
maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/changelog/GitChangeLogConsumerTest.java:
##########
@@ -172,4 +173,72 @@ public void testConsumer2()
         assertTrue( cf.getRevision() != null && cf.getRevision().length() > 0 
);
     }
 
+    public void testGitLogConsumer3()
+            throws Exception
+    {
+        GitChangeLogConsumer consumer = new GitChangeLogConsumer( new 
DefaultLog(), null );
+
+        File f = getTestFile( 
"/src/test/resources/git/changelog/gitlog3.gitlog" );
+
+        ConsumerUtils.consumeFile( f, consumer );
+
+        List<ChangeSet> modifications = consumer.getModifications();
+
+        assertEquals( 10, modifications.size() );
+
+        SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss Z" );
+        sdf.setTimeZone( TimeZone.getTimeZone( "GMT" ) );
+
+        ChangeSet first = modifications.get(0);
+        assertEquals( "Michael Osipov <micha...@apache.org>", 
first.getAuthor() );
+        assertEquals( "2022-01-08 20:02:12 +0000", sdf.format( first.getDate() 
) );
+        assertEquals( "[maven-release-plugin] prepare for next development 
iteration", first.getComment() );
+        assertEquals( "4fc34cfa14f2e72506187b03a492ce55ed459d4c", 
first.getRevision() );
+        assertEquals( Collections.emptyList(), first.getTags() );
+        assertNotNull( first.getFiles() );
+        assertFalse( first.getFiles().isEmpty() );
+
+        ChangeSet second = modifications.get(1);
+        assertEquals( "Michael Osipov <micha...@apache.org>", 
second.getAuthor() );
+        assertEquals( "2022-01-08 20:02:01 +0000", sdf.format( 
second.getDate() ) );
+        assertEquals( "[maven-release-plugin] prepare release 
maven-scm-2.0.0-M1", second.getComment() );
+        assertEquals( "3a6d9817fe809c43eca588d7c0f4428254eae17c", 
second.getRevision() );
+        assertEquals( Collections.singletonList("maven-scm-2.0.0-M1"), 
second.getTags() );
+        assertNotNull( second.getFiles() );
+        assertFalse( second.getFiles().isEmpty() );
+    }
+
+    public void testTagAndBranchConsumer() {
+        String[] lines = {
+            "commit a6d03ee7bcec7bfd6b0fc890a277f004a1c54077 (HEAD -> main, 
tag: TestTag, origin/main, origin/HEAD)",
+            "Author: Niels Basjes <ni...@basjes.nl>",
+            "Date:   2022-02-06 16:19:01 +0100",
+            "",
+            "    This",
+            "    is",
+            "    a",
+            "    multiline",
+            "    comment",
+            "",
+            ":100644 100644 2019174 808473f M\tdocumentation/pom.xml",
+            ""
+        };
+        GitChangeLogConsumer consumer = new GitChangeLogConsumer( new 
DefaultLog(), null );
+
+        for (String line : lines) {
+            consumer.consumeLine(line);

Review Comment:
   spaces missing





> Retrieve the tags on commits using the changelog command.
> ---------------------------------------------------------
>
>                 Key: SCM-977
>                 URL: https://issues.apache.org/jira/browse/SCM-977
>             Project: Maven SCM
>          Issue Type: New Feature
>          Components: maven-scm-api, maven-scm-provider-gitexe, 
> maven-scm-provider-jgit, maven-scm-provider-mercurial (hg)
>            Reporter: Niels Basjes
>            Priority: Major
>
> My aim is to support having something like 
> [https://www.conventionalcommits.org/] in the maven-release-plugin.
> This simply means that the next version of a release is calculated from the 
> last tag in the version history and the patterns in the commit messages since 
> that tag.
> To support this idea the maven-scm should be extended to also retrieve the 
> tags with the changelog command on SCM implementations that support this idea.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to