Skip to content

Commit 5ba22ae

Browse files
authored
Merge pull request #2003 from pi3k14/issue-2002
Fixes #2002 (wrong calculation of pre-release version)
2 parents 54eaa33 + ffc6ff7 commit 5ba22ae

File tree

3 files changed

+48
-16
lines changed

3 files changed

+48
-16
lines changed

src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForPreRelease.approved.txt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,29 @@
22
"Major":1,
33
"Minor":2,
44
"Patch":3,
5-
"PreReleaseTag":"unstable.5",
6-
"PreReleaseTagWithDash":"-unstable.5",
5+
"PreReleaseTag":"unstable.8",
6+
"PreReleaseTagWithDash":"-unstable.8",
77
"PreReleaseLabel":"unstable",
8-
"PreReleaseNumber":5,
9-
"WeightedPreReleaseNumber":5,
8+
"PreReleaseNumber":8,
9+
"WeightedPreReleaseNumber":8,
1010
"BuildMetaData":"",
1111
"BuildMetaDataPadded":"",
1212
"FullBuildMetaData":"Branch.develop.Sha.commitSha",
1313
"MajorMinorPatch":"1.2.3",
14-
"SemVer":"1.2.3-unstable.5",
15-
"LegacySemVer":"1.2.3-unstable5",
16-
"LegacySemVerPadded":"1.2.3-unstable0005",
14+
"SemVer":"1.2.3-unstable.8",
15+
"LegacySemVer":"1.2.3-unstable8",
16+
"LegacySemVerPadded":"1.2.3-unstable0008",
1717
"AssemblySemVer":"1.2.3.0",
1818
"AssemblySemFileVer":"1.2.3.0",
19-
"FullSemVer":"1.2.3-unstable.5",
20-
"InformationalVersion":"1.2.3-unstable.5+Branch.develop.Sha.commitSha",
19+
"FullSemVer":"1.2.3-unstable.8",
20+
"InformationalVersion":"1.2.3-unstable.8+Branch.develop.Sha.commitSha",
2121
"BranchName":"develop",
2222
"Sha":"commitSha",
2323
"ShortSha":"commitShortSha",
24-
"NuGetVersionV2":"1.2.3-unstable0005",
25-
"NuGetVersion":"1.2.3-unstable0005",
26-
"NuGetPreReleaseTagV2":"unstable0005",
27-
"NuGetPreReleaseTag":"unstable0005",
24+
"NuGetVersionV2":"1.2.3-unstable0008",
25+
"NuGetVersion":"1.2.3-unstable0008",
26+
"NuGetPreReleaseTagV2":"unstable0008",
27+
"NuGetPreReleaseTag":"unstable0008",
2828
"VersionSourceSha":"versionSourceSha",
2929
"CommitsSinceVersionSource":5,
3030
"CommitsSinceVersionSourcePadded":"0005",

src/GitVersionCore.Tests/IntegrationTests/DevelopScenarios.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,5 +273,21 @@ public void CommitsSinceVersionSourceShouldNotGoDownUponMergingFeatureOnlyToDeve
273273
var expectedFullSemVer = "1.3.0-alpha.5";
274274
fixture.AssertFullSemver(config, expectedFullSemVer);
275275
}
276+
277+
[Test]
278+
public void PreviousPreReleaseTagShouldBeRespectedWhenCountingCommits()
279+
{
280+
using var fixture = new EmptyRepositoryFixture();
281+
282+
fixture.Repository.MakeACommit();
283+
284+
fixture.BranchTo("develop");
285+
fixture.MakeATaggedCommit("1.0.0-alpha.3"); // manual bump version
286+
287+
fixture.MakeACommit();
288+
fixture.MakeACommit();
289+
290+
fixture.AssertFullSemver("1.0.0-alpha.5");
291+
}
276292
}
277293
}

src/GitVersionCore/OutputVariables/VariableProvider.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,25 @@ public VersionVariables GetVariablesFor(SemanticVersion semanticVersion, Effecti
102102
private static void PromoteNumberOfCommitsToTagNumber(SemanticVersion semanticVersion)
103103
{
104104
// For continuous deployment the commits since tag gets promoted to the pre-release number
105-
semanticVersion.PreReleaseTag.Number = semanticVersion.BuildMetaData.CommitsSinceTag;
106-
semanticVersion.BuildMetaData.CommitsSinceVersionSource = semanticVersion.BuildMetaData.CommitsSinceTag ?? 0;
107-
semanticVersion.BuildMetaData.CommitsSinceTag = null;
105+
if (!semanticVersion.BuildMetaData.CommitsSinceTag.HasValue)
106+
{
107+
semanticVersion.PreReleaseTag.Number = null;
108+
semanticVersion.BuildMetaData.CommitsSinceVersionSource = 0;
109+
}
110+
else
111+
{
112+
// Number of commits since last tag should be added to PreRelease number if given. Remember to deduct automatic version bump.
113+
if (semanticVersion.PreReleaseTag.Number.HasValue)
114+
{
115+
semanticVersion.PreReleaseTag.Number += semanticVersion.BuildMetaData.CommitsSinceTag - 1;
116+
}
117+
else
118+
{
119+
semanticVersion.PreReleaseTag.Number = semanticVersion.BuildMetaData.CommitsSinceTag;
120+
}
121+
semanticVersion.BuildMetaData.CommitsSinceVersionSource = semanticVersion.BuildMetaData.CommitsSinceTag.Value;
122+
semanticVersion.BuildMetaData.CommitsSinceTag = null; // why is this set to null ?
123+
}
108124
}
109125

110126
private static string CheckAndFormatString<T>(string formatString, T source, IEnvironment environment, string defaultValue, string formatVarName)

0 commit comments

Comments
 (0)