Skip to content

Commit 2bdebfa

Browse files
authored
Merge branch 'master' into GitVersion-calculating-wrong-version-when-building-a-tag
2 parents a954ba7 + 14fc094 commit 2bdebfa

File tree

6 files changed

+92
-8
lines changed

6 files changed

+92
-8
lines changed

src/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<PackageVersion_NUnit>3.12.0</PackageVersion_NUnit>
3535
<PackageVersion_GitToolsTesting>1.2.0</PackageVersion_GitToolsTesting>
3636
<PackageVersion_NUnit3TestAdapter>3.17.0</PackageVersion_NUnit3TestAdapter>
37-
<PackageVersion_NunitXmlTestLogger>2.1.62</PackageVersion_NunitXmlTestLogger>
37+
<PackageVersion_NunitXmlTestLogger>2.1.80</PackageVersion_NunitXmlTestLogger>
3838
<PackageVersion_Shouldly>4.0.0-beta0004</PackageVersion_Shouldly>
3939

4040
</PropertyGroup>

src/GitVersionCore.Tests/VersionCalculation/NextVersionCalculatorTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using GitVersion.Model.Configuration;
77
using GitVersion.VersionCalculation;
88
using GitVersionCore.Tests.Helpers;
9+
using GitVersionCore.Tests.IntegrationTests;
910
using GitVersionCore.Tests.Mocks;
1011
using LibGit2Sharp;
1112
using Microsoft.Extensions.DependencyInjection;
@@ -214,5 +215,20 @@ public void PreReleaseNumberShouldBeScopeToPreReleaseLabelInContinuousDelivery()
214215

215216
fixture.AssertFullSemver("0.1.0-beta.1+2", config);
216217
}
218+
219+
[Test]
220+
public void GetNextVersionOnNonMainlineBranchWithoutCommitsShouldWorkNormally()
221+
{
222+
var config = new Config
223+
{
224+
VersioningMode = VersioningMode.Mainline,
225+
NextVersion = "1.0.0"
226+
};
227+
228+
using var fixture = new EmptyRepositoryFixture();
229+
fixture.MakeACommit("initial commit");
230+
fixture.BranchTo("feature/f1");
231+
fixture.AssertFullSemver("1.0.0-f1.0", config);
232+
}
217233
}
218234
}

src/GitVersionCore/VersionCalculation/MainlineVersionCalculator.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,14 +210,17 @@ private Commit FindMergeBaseBeforeForwardMerge(Commit baseVersionSource, Branch
210210
// detect forward merge and rewind mainlineTip to before it
211211
if (mergeBase == context.CurrentCommit && !mainlineCommitLog.Contains(mergeBase))
212212
{
213-
var mainlineTipPrevious = mainlineTip.Parents.First();
214-
var message = $"Detected forward merge at {mainlineTip}; rewinding mainline to previous commit {mainlineTipPrevious}";
213+
var mainlineTipPrevious = mainlineTip.Parents.FirstOrDefault();
214+
if (mainlineTipPrevious != null)
215+
{
216+
var message = $"Detected forward merge at {mainlineTip}; rewinding mainline to previous commit {mainlineTipPrevious}";
215217

216-
log.Info(message);
218+
log.Info(message);
217219

218-
// re-do mergeBase detection before the forward merge
219-
mergeBase = repositoryMetadataProvider.FindMergeBase(context.CurrentCommit, mainlineTipPrevious);
220-
mainlineTip = GetEffectiveMainlineTip(mainlineCommitLog, mergeBase, mainlineTipPrevious);
220+
// re-do mergeBase detection before the forward merge
221+
mergeBase = repositoryMetadataProvider.FindMergeBase(context.CurrentCommit, mainlineTipPrevious);
222+
mainlineTip = GetEffectiveMainlineTip(mainlineCommitLog, mergeBase, mainlineTipPrevious);
223+
}
221224
}
222225

223226
return mergeBase;
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
using System;
2+
using GitVersion;
3+
using GitVersion.OutputVariables;
4+
using GitVersionCore.Tests.Helpers;
5+
using Microsoft.Extensions.DependencyInjection;
6+
using NUnit.Framework;
7+
using Shouldly;
8+
9+
namespace GitVersionExe.Tests
10+
{
11+
[TestFixture]
12+
public class ArgumentParserOnBuildServerTests : TestBase
13+
{
14+
private IArgumentParser argumentParser;
15+
16+
[SetUp]
17+
public void SetUp()
18+
{
19+
var sp = ConfigureServices(services =>
20+
{
21+
services.AddSingleton<IArgumentParser, ArgumentParser>();
22+
services.AddSingleton<IGlobbingResolver, GlobbingResolver>();
23+
services.AddSingleton<ICurrentBuildAgent, MockBuildAgent>();
24+
});
25+
argumentParser = sp.GetService<IArgumentParser>();
26+
}
27+
28+
[Test]
29+
public void EmptyOnFetchDisabledBuildServerMeansNoFetchIsTrue()
30+
{
31+
var arguments = argumentParser.ParseArguments("");
32+
arguments.NoFetch.ShouldBe(true);
33+
}
34+
35+
private class MockBuildAgent : ICurrentBuildAgent
36+
{
37+
public bool CanApplyToCurrentContext()
38+
{
39+
throw new NotImplementedException();
40+
}
41+
42+
public void WriteIntegration(Action<string> writer, VersionVariables variables, bool updateBuildNumber = true)
43+
{
44+
throw new NotImplementedException();
45+
}
46+
47+
public string GetCurrentBranch(bool usingDynamicRepos)
48+
{
49+
throw new NotImplementedException();
50+
}
51+
52+
public bool PreventFetch()
53+
{
54+
return true;
55+
}
56+
57+
public bool ShouldCleanUpRemotes()
58+
{
59+
throw new NotImplementedException();
60+
}
61+
}
62+
}
63+
}

src/GitVersionExe/ArgumentParser.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public Arguments ParseArguments(string[] commandLineArguments)
4949

5050
AddAuthentication(args);
5151

52+
args.NoFetch = buildAgent != null && buildAgent.PreventFetch();
53+
5254
return args;
5355
}
5456

src/GitVersionTask.Tests/GitVersionTask.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="Buildalyzer" Version="3.0.1" />
9+
<PackageReference Include="Buildalyzer" Version="3.1.0" />
1010
<PackageReference Include="LibGit2Sharp" Version="$(PackageVersion_LibGit2Sharp)" />
1111
<PackageReference Include="Microsoft.Build" Version="$(PackageVersion_MsBuild)" />
1212
<PackageReference Include="MSBuild.ProjectCreation" Version="1.4.6" />

0 commit comments

Comments
 (0)