Skip to content

Commit f554e4a

Browse files
authored
Merge pull request #1138 from LarsAndreasEk/unwanted-major-bump
Commit message counted twice?
2 parents cc322ff + 46d01de commit f554e4a

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

src/GitVersionCore.Tests/IntegrationTests/ReleaseBranchScenarios.cs

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
using GitTools.Testing;
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Diagnostics;
4+
using GitTools;
5+
using GitTools.Testing;
26
using GitVersion;
37
using GitVersionCore.Tests;
48
using LibGit2Sharp;
@@ -360,4 +364,50 @@ public void MergeOnReleaseBranchShouldNotResetCount()
360364
fixture.AssertFullSemver(config, "2.0.0-beta.2");
361365
}
362366
}
367+
368+
[Test]
369+
public void ReleaseBranchShouldUseBranchNameVersionDespiteBumpInPreviousCommit()
370+
{
371+
using (var fixture = new EmptyRepositoryFixture())
372+
{
373+
fixture.Repository.MakeATaggedCommit("1.0");
374+
fixture.Repository.MakeACommit("+semver:major");
375+
fixture.Repository.MakeACommit();
376+
377+
Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch("release/2.0"));
378+
379+
fixture.AssertFullSemver("2.0.0-beta.1+2");
380+
}
381+
}
382+
383+
[Test]
384+
public void ReleaseBranchWithACommitShouldUseBranchNameVersionDespiteBumpInPreviousCommit()
385+
{
386+
using (var fixture = new EmptyRepositoryFixture())
387+
{
388+
fixture.Repository.MakeATaggedCommit("1.0");
389+
fixture.Repository.MakeACommit("+semver:major");
390+
fixture.Repository.MakeACommit();
391+
392+
Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch("release/2.0"));
393+
394+
fixture.Repository.MakeACommit();
395+
396+
fixture.AssertFullSemver("2.0.0-beta.1+3");
397+
}
398+
}
399+
400+
[Test]
401+
public void ReleaseBranchedAtCommitWithSemverMessageShouldUseBranchNameVersion()
402+
{
403+
using (var fixture = new EmptyRepositoryFixture())
404+
{
405+
fixture.Repository.MakeATaggedCommit("1.0");
406+
fixture.Repository.MakeACommit("+semver:major");
407+
408+
Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch("release/2.0"));
409+
410+
fixture.AssertFullSemver("2.0.0-beta.1+1");
411+
}
412+
}
363413
}

src/GitVersionCore/VersionCalculation/BaseVersionCalculator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ public BaseVersion GetBaseVersion(GitVersionContext context)
5151
BaseVersion baseVersionWithOldestSource;
5252
if (matchingVersionsOnceIncremented.Any())
5353
{
54-
baseVersionWithOldestSource = matchingVersionsOnceIncremented.Aggregate((v1, v2) => v1.Version.BaseVersionSource.Committer.When < v2.Version.BaseVersionSource.Committer.When ? v1 : v2).Version;
54+
var oldest = matchingVersionsOnceIncremented.Aggregate((v1, v2) => v1.Version.BaseVersionSource.Committer.When < v2.Version.BaseVersionSource.Committer.When ? v1 : v2);
55+
baseVersionWithOldestSource = oldest.Version;
56+
maxVersion = oldest;
5557
Logger.WriteInfo(string.Format(
5658
"Found multiple base versions which will produce the same SemVer ({0}), taking oldest source for commit counting ({1})",
5759
maxVersion.IncrementedVersion,

0 commit comments

Comments
 (0)