[ 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)