Skip to content

Commit e8102ab

Browse files
authored
Merge pull request #2356 from FISHMANPET/mainline1.0.0
Add support for next-version in mainline mode
2 parents e705d37 + c701080 commit e8102ab

File tree

2 files changed

+48
-9
lines changed

2 files changed

+48
-9
lines changed

src/GitVersionCore.Tests/VersionCalculation/NextVersionCalculatorTests.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,42 @@ public void PreReleaseTagCanUseBranchName()
117117
fixture.AssertFullSemver("1.0.0-foo.1+2", config);
118118
}
119119

120+
[Test]
121+
public void PreReleaseVersionMainline()
122+
{
123+
var config = new Config
124+
{
125+
VersioningMode = VersioningMode.Mainline,
126+
NextVersion = "1.0.0"
127+
};
128+
129+
using var fixture = new EmptyRepositoryFixture();
130+
fixture.MakeACommit();
131+
fixture.BranchTo("foo");
132+
fixture.MakeACommit();
133+
134+
fixture.AssertFullSemver("1.0.0-foo.1", config);
135+
}
136+
137+
[Test]
138+
public void MergeIntoMainline()
139+
{
140+
var config = new Config
141+
{
142+
VersioningMode = VersioningMode.Mainline,
143+
NextVersion = "1.0.0"
144+
};
145+
146+
using var fixture = new EmptyRepositoryFixture();
147+
fixture.MakeACommit();
148+
fixture.BranchTo("foo");
149+
fixture.MakeACommit();
150+
fixture.Checkout("master");
151+
fixture.MergeNoFF("foo");
152+
153+
fixture.AssertFullSemver("1.0.0", config);
154+
}
155+
120156
[Test]
121157
public void PreReleaseTagCanUseBranchNameVariable()
122158
{

src/GitVersionCore/VersionCalculation/MainlineVersionCalculator.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,25 @@ public SemanticVersion FindMainlineModeVersion(BaseVersion baseVersion)
5454
var mainlineCommitLog = repositoryMetadataProvider.GetMainlineCommitLog(baseVersion.BaseVersionSource, mainlineTip);
5555
var directCommits = new List<Commit>(mainlineCommitLog.Count);
5656

57-
// Scans commit log in reverse, aggregating merge commits
58-
foreach (var commit in mainlineCommitLog)
57+
if (string.IsNullOrEmpty(context.Configuration.NextVersion))
5958
{
60-
directCommits.Add(commit);
61-
if (commit.Parents.Count() > 1)
59+
// Scans commit log in reverse, aggregating merge commits
60+
foreach (var commit in mainlineCommitLog)
6261
{
63-
mainlineVersion = AggregateMergeCommitIncrement(commit, directCommits, mainlineVersion, mainline);
62+
directCommits.Add(commit);
63+
if (commit.Parents.Count() > 1)
64+
{
65+
mainlineVersion = AggregateMergeCommitIncrement(commit, directCommits, mainlineVersion, mainline);
66+
}
6467
}
65-
}
6668

67-
// This will increment for any direct commits on mainline
68-
mainlineVersion = IncrementForEachCommit(directCommits, mainlineVersion, mainline);
69+
// This will increment for any direct commits on mainline
70+
mainlineVersion = IncrementForEachCommit(directCommits, mainlineVersion, mainline);
71+
}
6972
mainlineVersion.BuildMetaData = CreateVersionBuildMetaData(mergeBase);
7073

7174
// branches other than master always get a bump for the act of branching
72-
if (!context.CurrentBranch.IsSameBranch(mainline))
75+
if ((!context.CurrentBranch.IsSameBranch(mainline)) && (string.IsNullOrEmpty(context.Configuration.NextVersion)))
7376
{
7477
var branchIncrement = FindMessageIncrement(null, context.CurrentCommit, mergeBase, mainlineCommitLog);
7578
log.Info($"Performing {branchIncrement} increment for current branch ");

0 commit comments

Comments
 (0)