Skip to content

Commit 558aeb6

Browse files
committed
Base versions can specify whether the tag should be updated
1 parent b172118 commit 558aeb6

10 files changed

+40
-20
lines changed

GitVersionCore.Tests/VersionCalculation/BaseVersionCalculatorTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public V1Strategy(DateTimeOffset? when)
6464

6565
public override BaseVersion GetVersion(GitVersionContext context)
6666
{
67-
return new BaseVersion(false, new SemanticVersion(1), when);
67+
return new BaseVersion(false, true, new SemanticVersion(1), when);
6868
}
6969
}
7070

@@ -79,7 +79,7 @@ public V2Strategy(DateTimeOffset? when)
7979

8080
public override BaseVersion GetVersion(GitVersionContext context)
8181
{
82-
return new BaseVersion(true, new SemanticVersion(2), when);
82+
return new BaseVersion(true, true, new SemanticVersion(2), when);
8383
}
8484
}
8585
}

GitVersionCore.Tests/VersionCalculation/NewNextVersionCalculatorTests.cs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class NewNextVersionCalculatorTests
1111
[Test]
1212
public void ShouldIncrementVersionBasedOnConfig()
1313
{
14-
var baseCalculator = new TestBaseVersionCalculator(true, new SemanticVersion(1), new MockCommit());
14+
var baseCalculator = new TestBaseVersionCalculator(true, true, new SemanticVersion(1), new MockCommit());
1515
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "master", "b1a34e", DateTimeOffset.Now);
1616
var sut = new NewNextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData));
1717
var config = new Config();
@@ -29,7 +29,7 @@ public void ShouldIncrementVersionBasedOnConfig()
2929
[Test]
3030
public void DoesNotIncrementWhenBaseVersionSaysNotTo()
3131
{
32-
var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit());
32+
var baseCalculator = new TestBaseVersionCalculator(false, true, new SemanticVersion(1), new MockCommit());
3333
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "master", "b1a34e", DateTimeOffset.Now);
3434
var sut = new NewNextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData));
3535
var config = new Config();
@@ -47,7 +47,22 @@ public void DoesNotIncrementWhenBaseVersionSaysNotTo()
4747
[Test]
4848
public void AppliesBranchPreReleaseTag()
4949
{
50-
var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit());
50+
var baseCalculator = new TestBaseVersionCalculator(false, true, new SemanticVersion(1), new MockCommit());
51+
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(2, "develop", "b1a34e", DateTimeOffset.Now);
52+
var sut = new NewNextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData));
53+
var context = new GitVersionContextBuilder()
54+
.WithDevelopBranch()
55+
.Build();
56+
57+
var version = sut.FindVersion(context);
58+
59+
version.ToString("f").ShouldBe("1.0.0-unstable.1+2");
60+
}
61+
62+
[Test]
63+
public void DoesNotApplyPreReleaseTagWhenBaseVersionSaysNotTo()
64+
{
65+
var baseCalculator = new TestBaseVersionCalculator(false, false, new SemanticVersion(1), new MockCommit());
5166
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "develop", "b1a34e", DateTimeOffset.Now);
5267
var sut = new NewNextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData));
5368
var context = new GitVersionContextBuilder()
@@ -56,14 +71,14 @@ public void AppliesBranchPreReleaseTag()
5671

5772
var version = sut.FindVersion(context);
5873

59-
version.ToString().ShouldBe("1.0.0-unstable.1");
74+
version.ToString("f").ShouldBe("1.0.0+1");
6075
}
6176

6277
[Test]
6378
public void PreReleaseTagCanUseBranchName()
6479
{
65-
var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit());
66-
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "develop", "b1a34e", DateTimeOffset.Now);
80+
var baseCalculator = new TestBaseVersionCalculator(false, true, new SemanticVersion(1), new MockCommit());
81+
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(2, "develop", "b1a34e", DateTimeOffset.Now);
6782
var sut = new NewNextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData));
6883
var config = new Config();
6984
config.Branches.Add("custom/", new BranchConfig
@@ -78,7 +93,7 @@ public void PreReleaseTagCanUseBranchName()
7893

7994
var version = sut.FindVersion(context);
8095

81-
version.ToString().ShouldBe("1.0.0-foo.1");
96+
version.ToString("f").ShouldBe("1.0.0-foo.1+2");
8297
}
8398
}
8499
}

GitVersionCore.Tests/VersionCalculation/TestBaseVersionCalculator.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,20 @@ public class TestBaseVersionCalculator : IBaseVersionCalculator
99
{
1010
readonly SemanticVersion semanticVersion;
1111
bool shouldIncrement;
12+
bool shouldUpdateTag;
1213
Commit source;
1314

14-
public TestBaseVersionCalculator(bool shouldIncrement, SemanticVersion semanticVersion, Commit source)
15+
public TestBaseVersionCalculator(bool shouldIncrement, bool shouldUpdateTag, SemanticVersion semanticVersion, Commit source)
1516
{
1617
this.semanticVersion = semanticVersion;
1718
this.source = source;
19+
this.shouldUpdateTag = shouldUpdateTag;
1820
this.shouldIncrement = shouldIncrement;
1921
}
2022

2123
public BaseVersion GetBaseVersion(GitVersionContext context)
2224
{
23-
return new BaseVersion(shouldIncrement, semanticVersion, source);
25+
return new BaseVersion(shouldIncrement, shouldUpdateTag, semanticVersion, source);
2426
}
2527
}
2628
}

GitVersionCore/VersionCalculation/BaseVersionCalculator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public BaseVersion GetBaseVersion(GitVersionContext context)
2121
{
2222
if (v1.SemanticVersion > v2.SemanticVersion)
2323
{
24-
return new BaseVersion(v1.ShouldIncrement, v1.SemanticVersion, v1.BaseVersionSource ?? v2.BaseVersionSource);
24+
return new BaseVersion(v1.ShouldIncrement, v1.ShouldUpdateTag, v1.SemanticVersion, v1.BaseVersionSource ?? v2.BaseVersionSource);
2525
}
2626

27-
return new BaseVersion(v2.ShouldIncrement, v2.SemanticVersion, v2.BaseVersionSource ?? v1.BaseVersionSource);
27+
return new BaseVersion(v2.ShouldIncrement, v2.ShouldUpdateTag, v2.SemanticVersion, v2.BaseVersionSource ?? v1.BaseVersionSource);
2828
});
2929
}
3030
}

GitVersionCore/VersionCalculation/BaseVersionCalculators/BaseVersion.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44

55
public class BaseVersion
66
{
7-
public BaseVersion(bool shouldIncrement, SemanticVersion semanticVersion, Commit baseVersionSource)
7+
public BaseVersion(bool shouldIncrement, bool shouldUpdateTag, SemanticVersion semanticVersion, Commit baseVersionSource)
88
{
99
ShouldIncrement = shouldIncrement;
10+
ShouldUpdateTag = shouldUpdateTag;
1011
SemanticVersion = semanticVersion;
1112
BaseVersionSource = baseVersionSource;
1213
}
1314

1415
public bool ShouldIncrement { get; private set; }
1516

17+
public bool ShouldUpdateTag { get; private set; }
18+
1619
public SemanticVersion SemanticVersion { get; private set; }
1720

1821
public Commit BaseVersionSource { get; private set; }

GitVersionCore/VersionCalculation/BaseVersionCalculators/ConfigNextVersionBaseVersionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public override BaseVersion GetVersion(GitVersionContext context)
66
{
77
if (string.IsNullOrEmpty(context.Configuration.NextVersion))
88
return null;
9-
return new BaseVersion(false, SemanticVersion.Parse(context.Configuration.NextVersion, context.Configuration.GitTagPrefix), null);
9+
return new BaseVersion(false, true, SemanticVersion.Parse(context.Configuration.NextVersion, context.Configuration.GitTagPrefix), null);
1010
}
1111
}
1212
}

GitVersionCore/VersionCalculation/BaseVersionCalculators/LastTagBaseVersionStrategy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ public override BaseVersion GetVersion(GitVersionContext context)
77
VersionTaggedCommit version;
88
if (new LastTaggedReleaseFinder(context).GetVersion(out version))
99
{
10-
var shouldIncrement = version.Commit != context.CurrentCommit;
11-
return new BaseVersion(shouldIncrement, version.SemVer, version.Commit);
10+
var shouldUpdateVersion = version.Commit != context.CurrentCommit;
11+
return new BaseVersion(shouldUpdateVersion, shouldUpdateVersion, version.SemVer, version.Commit);
1212
}
1313

1414
return null;

GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public override BaseVersion GetVersion(GitVersionContext context)
99
SemanticVersion semanticVersion;
1010
// TODO when this approach works, inline the other class into here
1111
if (MergeMessageParser.TryParse(context.CurrentCommit, context.Configuration, out semanticVersion))
12-
return new BaseVersion(true, semanticVersion, commit);
12+
return new BaseVersion(true, true, semanticVersion, commit);
1313
}
1414
return null;
1515
}

GitVersionCore/VersionCalculation/BaseVersionCalculators/VersionInBranchBaseVersionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public override BaseVersion GetVersion(GitVersionContext context)
1111
if (versionInBranch != null)
1212
{
1313
var firstCommitOfBranch = context.CurrentBranch.Commits.Last();
14-
return new BaseVersion(false, versionInBranch.Item2, firstCommitOfBranch);
14+
return new BaseVersion(false, true, versionInBranch.Item2, firstCommitOfBranch);
1515
}
1616

1717
return null;

GitVersionCore/VersionCalculation/NewNextVersionCalculator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public SemanticVersion FindVersion(GitVersionContext context)
2626

2727
if (baseVersion.ShouldIncrement) IncrementVersion(context, baseVersion);
2828

29-
if (!baseVersion.SemanticVersion.PreReleaseTag.HasTag() && !string.IsNullOrEmpty(context.Configuration.Tag))
29+
if (baseVersion.ShouldUpdateTag && !baseVersion.SemanticVersion.PreReleaseTag.HasTag() && !string.IsNullOrEmpty(context.Configuration.Tag))
3030
{
3131
var tagToUse = context.Configuration.Tag;
3232
if (tagToUse == "useBranchName")

0 commit comments

Comments
 (0)