1010use function array_reduce ;
1111use function preg_match ;
1212use function sprintf ;
13+ use function strpos ;
1314
1415final class PullRequestChangelogGenerator implements ChangelogGenerator
1516{
@@ -30,8 +31,10 @@ public function getUnreleasedChangelog(): Changelog
3031 $ unreleasedCommits = $ this ->versionControlSystem ->getCommitsSinceLastVersion (self ::PULL_REQUEST_PATTERN );
3132 $ unreleasedChanges = array_map ([$ this , 'createChangeFromCommit ' ], $ unreleasedCommits );
3233
34+ $ filteredUnreleasedChanges = $ this ->filterUnreleasedChanges ($ unreleasedChanges );
35+
3336 $ changelog = new Changelog ();
34- $ changelog ->addUnreleasedChanges ($ unreleasedChanges );
37+ $ changelog ->addUnreleasedChanges ($ filteredUnreleasedChanges );
3538
3639 return $ changelog ;
3740 }
@@ -58,14 +61,38 @@ function (Changelog $changelog, string $version): Changelog {
5861 $ commits
5962 );
6063
61- $ changelog ->addVersion ($ version , $ changes );
64+ $ filterUnreleasedChanges = $ this ->filterUnreleasedChanges ($ changes );
65+
66+ $ changelog ->addVersion ($ version , $ filterUnreleasedChanges );
6267
6368 return $ changelog ;
6469 },
6570 new Changelog ()
6671 );
6772 }
6873
74+ /**
75+ * @param mixed[] $changeLogElements
76+ * @return mixed[]
77+ */
78+ private function filterUnreleasedChanges (array $ changeLogElements ): array
79+ {
80+ $ filteredChangeLogElements = [];
81+ foreach ($ changeLogElements as $ element ) {
82+ if (strpos ($ element , '[MERGE] ' ) !== false ) {
83+ continue ;
84+ }
85+
86+ if (strpos ($ element , '[SKIP-LOG] ' ) !== false ) {
87+ continue ;
88+ }
89+
90+ $ filteredChangeLogElements [] = $ element ;
91+ }
92+
93+ return $ filteredChangeLogElements ;
94+ }
95+
6996 /**
7097 * @SuppressWarnings(PHPMD.UnusedPrivateMethod) Method is used as callable in getChangelog()
7198 */
0 commit comments