Skip to content

Commit 104a942

Browse files
committed
Add support for Squash Commit releases
1 parent 1115033 commit 104a942

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs

+14-8
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public void ShouldNotAllowIncrementOfVersion()
5454
[TestCase("Merge branch 'Release-v0.2.0'", true, "0.2.0")]
5555
[TestCase("Merge remote-tracking branch 'origin/release/0.8.0' into develop/" + MainBranch, true, "0.8.0")]
5656
[TestCase("Merge remote-tracking branch 'refs/remotes/origin/release/2.0.0'", true, "2.0.0")]
57+
[TestCase("Merge branch 'Releases/0.2.0'", false, "0.2.0")] // Support Squash Commits
5758
public void TakesVersionFromMergeOfReleaseBranch(string message, bool isMergeCommit, string expectedVersion)
5859
{
5960
var parents = GetParents(isMergeCommit);
@@ -83,15 +84,20 @@ public void TakesVersionFromMergeOfReleaseBranch(string message, bool isMergeCom
8384
[TestCase("Finish 0.14.1", true)] // Don't support Syntevo SmartGit/Hg's Gitflow merge commit messages for finishing a 'Hotfix' branch
8485
public void ShouldNotTakeVersionFromMergeOfNonReleaseBranch(string message, bool isMergeCommit)
8586
{
87+
var configurationBuilder = GitFlowConfigurationBuilder.New;
88+
configurationBuilder.WithBranch("hotfix", builder => builder.WithIsReleaseBranch(false));
89+
ConfigurationHelper configurationHelper = new(configurationBuilder.Build());
90+
var configurationDictionary = configurationHelper.Dictionary;
91+
8692
var parents = GetParents(isMergeCommit);
87-
AssertMergeMessage(message, null, parents);
88-
AssertMergeMessage(message + " ", null, parents);
89-
AssertMergeMessage(message + "\r ", null, parents);
90-
AssertMergeMessage(message + "\r", null, parents);
91-
AssertMergeMessage(message + "\r\n", null, parents);
92-
AssertMergeMessage(message + "\r\n ", null, parents);
93-
AssertMergeMessage(message + "\n", null, parents);
94-
AssertMergeMessage(message + "\n ", null, parents);
93+
AssertMergeMessage(message, null, parents, configurationDictionary);
94+
AssertMergeMessage(message + " ", null, parents, configurationDictionary);
95+
AssertMergeMessage(message + "\r ", null, parents, configurationDictionary);
96+
AssertMergeMessage(message + "\r", null, parents, configurationDictionary);
97+
AssertMergeMessage(message + "\r\n", null, parents, configurationDictionary);
98+
AssertMergeMessage(message + "\r\n ", null, parents, configurationDictionary);
99+
AssertMergeMessage(message + "\n", null, parents, configurationDictionary);
100+
AssertMergeMessage(message + "\n ", null, parents, configurationDictionary);
95101
}
96102

97103
[TestCase("Merge pull request #165 from organization/Particular/release-1.0.0", true)]

src/GitVersion.Core/MergeMessage.cs

+7-4
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,16 @@ public static bool TryParse(
9797
mergeCommit.NotNull();
9898
configuration.NotNull();
9999

100-
mergeMessage = null;
100+
mergeMessage = new(mergeCommit.Message, configuration);
101101

102-
if (mergeCommit.IsMergeCommit())
102+
var isReleaseBranch = mergeMessage.MergedBranch != null && configuration.IsReleaseBranch(mergeMessage.MergedBranch);
103+
var isValidMergeCommit = mergeCommit.IsMergeCommit() || isReleaseBranch;
104+
105+
if (!isValidMergeCommit)
103106
{
104-
mergeMessage = new MergeMessage(mergeCommit.Message, configuration);
107+
mergeMessage = null;
105108
}
106109

107-
return mergeMessage != null;
110+
return isValidMergeCommit;
108111
}
109112
}

0 commit comments

Comments
 (0)