[
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 <[email protected]>",
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 <[email protected]>",
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 <[email protected]>",
+ "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)