Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using GitVersion.Model.Configuration;
using GitVersion.VersionCalculation;
using GitVersionCore.Tests.Helpers;
using GitVersionCore.Tests.IntegrationTests;
using GitVersionCore.Tests.Mocks;
using LibGit2Sharp;
using Microsoft.Extensions.DependencyInjection;
Expand Down Expand Up @@ -214,5 +215,20 @@ public void PreReleaseNumberShouldBeScopeToPreReleaseLabelInContinuousDelivery()

fixture.AssertFullSemver("0.1.0-beta.1+2", config);
}

[Test]
public void GetNextVersionOnNonMainlineBranchWithoutCommitsShouldWorkNormally()
{
var config = new Config
{
VersioningMode = VersioningMode.Mainline,
NextVersion = "1.0.0"
};

using var fixture = new EmptyRepositoryFixture();
fixture.MakeACommit("initial commit");
fixture.BranchTo("feature/f1");
fixture.AssertFullSemver("1.0.0-f1.0", config);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -210,14 +210,17 @@ private Commit FindMergeBaseBeforeForwardMerge(Commit baseVersionSource, Branch
// detect forward merge and rewind mainlineTip to before it
if (mergeBase == context.CurrentCommit && !mainlineCommitLog.Contains(mergeBase))
{
var mainlineTipPrevious = mainlineTip.Parents.First();
var message = $"Detected forward merge at {mainlineTip}; rewinding mainline to previous commit {mainlineTipPrevious}";
var mainlineTipPrevious = mainlineTip.Parents.FirstOrDefault();
if (mainlineTipPrevious != null)
{
var message = $"Detected forward merge at {mainlineTip}; rewinding mainline to previous commit {mainlineTipPrevious}";

log.Info(message);
log.Info(message);

// re-do mergeBase detection before the forward merge
mergeBase = repositoryMetadataProvider.FindMergeBase(context.CurrentCommit, mainlineTipPrevious);
mainlineTip = GetEffectiveMainlineTip(mainlineCommitLog, mergeBase, mainlineTipPrevious);
// re-do mergeBase detection before the forward merge
mergeBase = repositoryMetadataProvider.FindMergeBase(context.CurrentCommit, mainlineTipPrevious);
mainlineTip = GetEffectiveMainlineTip(mainlineCommitLog, mergeBase, mainlineTipPrevious);
}
}

return mergeBase;
Expand Down