From 0d42dacc1771cdffc20c2cd75f30e1ad525ebc29 Mon Sep 17 00:00:00 2001 From: Patrik Beno Date: Thu, 14 Apr 2022 06:34:16 +0200 Subject: [PATCH] fix #3071 consider commit messages since latest tag only --- .../VersionBumpingScenarios.cs | 18 ++++++++++++++++++ .../IncrementStrategyFinder.cs | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs index 14104dfed3..c119fbefbd 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs @@ -2,6 +2,7 @@ using GitVersion.Core.Tests.Helpers; using GitVersion.Model.Configuration; using GitVersion.VersionCalculation; +using LibGit2Sharp; using NUnit.Framework; namespace GitVersion.Core.Tests.IntegrationTests; @@ -48,6 +49,23 @@ public void CanUseCommitMessagesToBumpVersion() fixture.AssertFullSemver("2.0.0+2"); } + [Test] + public void CanUseCommitMessagesToBumpVersion_TagTakesPriority() + { + using var fixture = new EmptyRepositoryFixture(); + var repo = fixture.Repository; + + repo.MakeATaggedCommit("1.0.0"); + repo.MakeACommit("+semver:major"); + fixture.AssertFullSemver("2.0.0+1"); + + repo.ApplyTag("1.1.0"); + fixture.AssertFullSemver("1.1.0"); + + repo.MakeACommit(); + fixture.AssertFullSemver("1.1.1+1"); + } + [Theory] [TestCase("build: Cleaned up various things", "1.0.1")] [TestCase("build: Cleaned up various things\n\nSome descriptive text", "1.0.1")] diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index d421238cb4..17d63c2c58 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -77,6 +77,13 @@ public class IncrementStrategyFinder : IIncrementStrategyFinder var commits = GetIntermediateCommits(repository, baseCommit, context.CurrentCommit); + // consider commit messages since latest tag only (see #3071) + var tags = new HashSet(repository.Tags.Select(t => t.TargetSha)); + commits = commits + .Reverse() + .TakeWhile(x => !tags.Contains(x.Sha)) + .Reverse(); + if (context.Configuration.CommitMessageIncrementing == CommitMessageIncrementMode.MergeMessageOnly) { commits = commits.Where(c => c.Parents.Count() > 1);