From 1ade08baacff4992f2c2af7ae8d7f24b341f658b Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Fri, 19 Dec 2025 15:19:19 +0100 Subject: [PATCH 1/2] fix: ignore mainline merges from same branch --- .../NextVersionCalculatorTests.cs | 16 ++++++ .../MainlineVersionStrategy.cs | 56 ++++++++++--------- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs index 8078135ed0..f586368f69 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs @@ -119,6 +119,22 @@ public void MergeIntoMainline() fixture.AssertFullSemver("1.0.0", configuration); } + [Test] + public void MergeSelfeIntoMainline() + { + var configuration = TrunkBasedConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture(); + fixture.MakeACommit(); + fixture.CreateBranch("foo"); + fixture.MakeACommit(); + fixture.MergeTo("foo"); + fixture.Checkout(MainBranch); + fixture.Repository.Merge("foo", Generate.SignatureNow()); + + fixture.AssertFullSemver("0.0.3", configuration); + } + [Test] public void MergeFeatureIntoMainline() { diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs index 7365ec1a7b..a7cd9a342d 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs @@ -232,40 +232,42 @@ private bool IterateOverCommitsRecursive( continue; } - if (mergeMessage.MergedBranch is not null) + if (mergeMessage.MergedBranch is null || mergeMessage.MergedBranch.EquivalentTo(branchName.WithoutOrigin)) { - var childConfiguration = Context.Configuration.GetBranchConfiguration(mergeMessage.MergedBranch); - var childBranchName = mergeMessage.MergedBranch; + continue; + } - if (childConfiguration.IsMainBranch == true) - { - if (configuration.IsMainBranch == true) throw new NotImplementedException(); + var childConfiguration = Context.Configuration.GetBranchConfiguration(mergeMessage.MergedBranch); + var childBranchName = mergeMessage.MergedBranch; - mergedCommitsInReverseOrderLazy = new( - () => [.. this.incrementStrategyFinder.GetMergedCommits(item, 0, Context.Configuration.Ignore).Reverse()] - ); - childConfiguration = configuration; - childBranchName = iteration.BranchName; - } + if (childConfiguration.IsMainBranch == true) + { + if (configuration.IsMainBranch == true) throw new NotImplementedException(); - var childIteration = CreateIteration( - branchName: childBranchName, - configuration: childConfiguration, - parentIteration: iteration, - parentCommit: commit + mergedCommitsInReverseOrderLazy = new( + () => [.. this.incrementStrategyFinder.GetMergedCommits(item, 0, Context.Configuration.Ignore).Reverse()] ); + childConfiguration = configuration; + childBranchName = iteration.BranchName; + } - var done = IterateOverCommitsRecursive( - commitsInReverseOrder: mergedCommitsInReverseOrderLazy.Value, - iteration: childIteration, - targetBranch: targetBranch, - targetLabel: targetLabel, - taggedSemanticVersions: taggedSemanticVersions, - traversedCommits: traversedCommits); + var childIteration = CreateIteration( + branchName: childBranchName, + configuration: childConfiguration, + parentIteration: iteration, + parentCommit: commit + ); - commit.AddChildIteration(childIteration); - if (done) return true; - } + var done = IterateOverCommitsRecursive( + commitsInReverseOrder: mergedCommitsInReverseOrderLazy.Value, + iteration: childIteration, + targetBranch: targetBranch, + targetLabel: targetLabel, + taggedSemanticVersions: taggedSemanticVersions, + traversedCommits: traversedCommits); + + commit.AddChildIteration(childIteration); + if (done) return true; traversedCommits.AddRange(mergedCommitsInReverseOrderLazy.Value); } From a8e785eb6afb43bd38b8f216687196c18d17feeb Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Fri, 19 Dec 2025 19:11:46 +0100 Subject: [PATCH 2/2] Update src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Asbjørn Ulsberg --- .../VersionCalculation/NextVersionCalculatorTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs index f586368f69..00d85d5c11 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs @@ -120,7 +120,7 @@ public void MergeIntoMainline() } [Test] - public void MergeSelfeIntoMainline() + public void MergeSelfIntoMainline() { var configuration = TrunkBasedConfigurationBuilder.New.Build();