From 104a94202f32a7549a7a19bc41ca5b3a2f718736 Mon Sep 17 00:00:00 2001 From: Wendelin Niesl Date: Fri, 29 Mar 2024 20:24:51 +0100 Subject: [PATCH 1/2] Add support for Squash Commit releases --- .../MergeMessageBaseVersionStrategyTests.cs | 22 ++++++++++++------- src/GitVersion.Core/MergeMessage.cs | 11 ++++++---- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs index f1c09f2f30..0f34c39434 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs @@ -54,6 +54,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); @@ -83,15 +84,20 @@ public void TakesVersionFromMergeOfReleaseBranch(string message, bool isMergeCom [TestCase("Finish 0.14.1", true)] // Don't support Syntevo SmartGit/Hg's Gitflow merge commit messages for finishing a 'Hotfix' branch public void ShouldNotTakeVersionFromMergeOfNonReleaseBranch(string message, bool isMergeCommit) { + var configurationBuilder = GitFlowConfigurationBuilder.New; + configurationBuilder.WithBranch("hotfix", builder => builder.WithIsReleaseBranch(false)); + ConfigurationHelper configurationHelper = new(configurationBuilder.Build()); + var configurationDictionary = configurationHelper.Dictionary; + var parents = GetParents(isMergeCommit); - AssertMergeMessage(message, null, parents); - AssertMergeMessage(message + " ", null, parents); - AssertMergeMessage(message + "\r ", null, parents); - AssertMergeMessage(message + "\r", null, parents); - AssertMergeMessage(message + "\r\n", null, parents); - AssertMergeMessage(message + "\r\n ", null, parents); - AssertMergeMessage(message + "\n", null, parents); - AssertMergeMessage(message + "\n ", null, parents); + AssertMergeMessage(message, null, parents, configurationDictionary); + AssertMergeMessage(message + " ", null, parents, configurationDictionary); + AssertMergeMessage(message + "\r ", null, parents, configurationDictionary); + AssertMergeMessage(message + "\r", null, parents, configurationDictionary); + AssertMergeMessage(message + "\r\n", null, parents, configurationDictionary); + AssertMergeMessage(message + "\r\n ", null, parents, configurationDictionary); + AssertMergeMessage(message + "\n", null, parents, configurationDictionary); + AssertMergeMessage(message + "\n ", null, parents, configurationDictionary); } [TestCase("Merge pull request #165 from organization/Particular/release-1.0.0", true)] diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index d1d808ce6c..826f72eefe 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -97,13 +97,16 @@ public static bool TryParse( mergeCommit.NotNull(); configuration.NotNull(); - mergeMessage = null; + mergeMessage = new(mergeCommit.Message, configuration); - if (mergeCommit.IsMergeCommit()) + var isReleaseBranch = mergeMessage.MergedBranch != null && configuration.IsReleaseBranch(mergeMessage.MergedBranch); + var isValidMergeCommit = mergeCommit.IsMergeCommit() || isReleaseBranch; + + if (!isValidMergeCommit) { - mergeMessage = new MergeMessage(mergeCommit.Message, configuration); + mergeMessage = null; } - return mergeMessage != null; + return isValidMergeCommit; } } From e91df74948b8e2f0c67d6239202a12142cfa9ce8 Mon Sep 17 00:00:00 2001 From: Wendelin Niesl Date: Sat, 30 Mar 2024 09:55:11 +0100 Subject: [PATCH 2/2] Invert mergeMessage creation --- src/GitVersion.Core/MergeMessage.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index 826f72eefe..36f8cca220 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -97,14 +97,15 @@ public static bool TryParse( mergeCommit.NotNull(); configuration.NotNull(); - mergeMessage = new(mergeCommit.Message, configuration); + mergeMessage = null; - var isReleaseBranch = mergeMessage.MergedBranch != null && configuration.IsReleaseBranch(mergeMessage.MergedBranch); + var mergedBranch = new MergeMessage(mergeCommit.Message, configuration).MergedBranch; + var isReleaseBranch = mergedBranch != null && configuration.IsReleaseBranch(mergedBranch); var isValidMergeCommit = mergeCommit.IsMergeCommit() || isReleaseBranch; - if (!isValidMergeCommit) + if (isValidMergeCommit) { - mergeMessage = null; + mergeMessage = new(mergeCommit.Message, configuration); } return isValidMergeCommit;