diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs index 4911d9ac11..6f9a5e3724 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs @@ -52,6 +52,7 @@ public void ShouldNotAllowIncrementOfVersion() [TestCase("Merge branch 'Release-v0.2.0'", true, "0.2.0")] [TestCase("Merge remote-tracking branch 'origin/release/0.8.0' into develop/" + MainBranch, true, "0.8.0")] [TestCase("Merge remote-tracking branch 'refs/remotes/origin/release/2.0.0'", true, "2.0.0")] + [TestCase("Merge branch 'Releases/0.2.0'", false, "0.2.0")] // Support Squash Commits public void TakesVersionFromMergeOfReleaseBranch(string message, bool isMergeCommit, string expectedVersion) { var parents = GetParents(isMergeCommit); diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index 0750d5aedc..8473e2640a 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -98,7 +98,11 @@ public static bool TryParse( mergeMessage = null; - if (mergeCommit.IsMergeCommit) + var mergeMessageFormats = DefaultFormats.Union( + configuration.MergeMessageFormats + .Select(n => new MergeMessageFormat(n.Key, n.Value))); + + if (mergeCommit.IsMergeCommit || mergeMessageFormats.Any(format => format.Pattern.IsMatch(mergeCommit.Message))) { mergeMessage = new(mergeCommit.Message, configuration); } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs index 9ea12dded1..79fed3ac22 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs @@ -67,14 +67,8 @@ private static bool TryParse(ICommit mergeCommit, GitVersionContext context, [No return mergeMessage != null; } - private static MergeMessage? Inner(ICommit mergeCommit, GitVersionContext context) - { - if (mergeCommit.Parents.Count() < 2) - { - return null; - } - - var mergeMessage = new MergeMessage(mergeCommit.Message, context.Configuration); - return mergeMessage; - } + private static MergeMessage? Inner(ICommit mergeCommit, GitVersionContext context) => + MergeMessage.TryParse(mergeCommit, context.Configuration, out MergeMessage? mergeMessage) + ? mergeMessage + : null; }