Skip to content

Commit 75f4774

Browse files
authored
Merge pull request #2222 from ruhullahshah/feature/1994_PreReleaseWeightAndRegexForTags
Mechanism to configure a pre-release-weight for the tagged commits
2 parents 18deafc + d713fd5 commit 75f4774

15 files changed

+147
-12
lines changed

docs/input/docs/configuration.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ The number of characters to pad `CommitsSinceVersionSource` to in the
199199
set to `4`, which will pad the `CommitsSinceVersionSource` value of `1` to
200200
`0001`.
201201

202+
### tag-pre-release-weight
203+
204+
The pre-release weight in case of tagged commits. If the value is not set in the configuration, a default weight of 60000 is used instead. If the `WeightedPreReleaseNumber` [variable](./more-info/variables) is 0 and this parameter is set, its value is used. This helps if your branching model is GitFlow and the last release build, which is often tagged, can utilise this parameter to produce a monotonically increasing build number.
205+
202206
### commit-message-incrementing
203207

204208
Sets whether it should be possible to increment the version with special syntax

src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ no-bump-message: '\+semver:\s?(none|skip)'
1010
legacy-semver-padding: 4
1111
build-metadata-padding: 4
1212
commits-since-version-source-padding: 4
13+
tag-pre-release-weight: 60000
1314
commit-message-incrementing: Enabled
1415
branches:
1516
develop:

src/GitVersionCore.Tests/Helpers/TestEffectiveConfiguration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public TestEffectiveConfiguration(
4343
majorMessage, minorMessage, patchMessage, noBumpMessage,
4444
commitMessageMode, legacySemVerPadding, buildMetaDataPadding, commitsSinceVersionSourcePadding,
4545
versionFilters ?? Enumerable.Empty<IVersionFilter>(),
46-
tracksReleaseBranches, isRelease, commitDateFormat, updateBuildNumber, 0)
46+
tracksReleaseBranches, isRelease, commitDateFormat, updateBuildNumber, 0, 0)
4747
{
4848
}
4949
}
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
using GitTools.Testing;
2+
using GitVersion.Configuration;
3+
using GitVersion.Model.Configuration;
4+
using GitVersion.VersionCalculation;
5+
using NUnit.Framework;
6+
using Shouldly;
7+
8+
namespace GitVersionCore.Tests.IntegrationTests
9+
{
10+
[TestFixture]
11+
class VersionInTagScenarios
12+
{
13+
[Test]
14+
public void TagPreReleaseWeightIsNotConfigured_HeadIsATaggedCommit_WeightedPreReleaseNumberShouldBeTheDefaultValue()
15+
{
16+
// Arrange
17+
var config = new Config()
18+
{
19+
AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}",
20+
};
21+
config.ApplyDefaults();
22+
23+
// Act
24+
using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
25+
fixture.MakeATaggedCommit("1.1.0");
26+
var version = fixture.GetVersion(config);
27+
28+
// Assert
29+
version.AssemblySemFileVer.ShouldBe("1.1.0.60000");
30+
}
31+
32+
[Test]
33+
public void TagPreReleaseWeightIsConfigured_HeadIsATaggedCommit_WeightedPreReleaseNumberShouldBeTheSameAsTheTagPreReleaseWeight()
34+
{
35+
// Arrange
36+
var config = new Config()
37+
{
38+
AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}",
39+
TagPreReleaseWeight = 65535
40+
};
41+
config.ApplyDefaults();
42+
43+
// Act
44+
using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
45+
fixture.MakeATaggedCommit("1.1.0");
46+
var version = fixture.GetVersion(config);
47+
48+
// Assert
49+
version.AssemblySemFileVer.ShouldBe("1.1.0.65535");
50+
}
51+
52+
[Test]
53+
public void TagPreReleaseWeightIsConfigured_GitFlowReleaseIsFinished_WeightedPreReleaseNumberShouldBeTheSameAsTheTagPreReleaseWeight()
54+
{
55+
// Arrange
56+
var config = new Config()
57+
{
58+
AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}",
59+
TagPreReleaseWeight = 65535,
60+
VersioningMode = VersioningMode.ContinuousDeployment
61+
};
62+
config.ApplyDefaults();
63+
64+
// Act
65+
using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
66+
fixture.Checkout("master");
67+
fixture.MergeNoFF("develop");
68+
fixture.Checkout("develop");
69+
fixture.MakeACommit("Feature commit 1");
70+
fixture.BranchTo("release/1.1.0");
71+
fixture.MakeACommit("Release commit 1");
72+
fixture.AssertFullSemver("1.1.0-beta.1", config);
73+
fixture.ApplyTag("1.1.0");
74+
var version = fixture.GetVersion(config);
75+
76+
// Assert
77+
version.AssemblySemFileVer.ShouldBe("1.1.0.65535");
78+
}
79+
80+
[Test]
81+
public void TagPreReleaseWeightIsNotConfigured_GitFlowReleaseIsFinished_WeightedPreReleaseNumberShouldBeTheDefaultValue()
82+
{
83+
// Arrange
84+
var config = new Config()
85+
{
86+
AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}",
87+
VersioningMode = VersioningMode.ContinuousDeployment
88+
};
89+
config.ApplyDefaults();
90+
91+
// Act
92+
using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
93+
fixture.Checkout("master");
94+
fixture.MergeNoFF("develop");
95+
fixture.Checkout("develop");
96+
fixture.MakeACommit("Feature commit 1");
97+
fixture.BranchTo("release/1.1.0");
98+
fixture.MakeACommit("Release commit 1");
99+
fixture.AssertFullSemver("1.1.0-beta.1", config);
100+
fixture.ApplyTag("1.1.0");
101+
var version = fixture.GetVersion(config);
102+
103+
// Assert
104+
version.AssemblySemFileVer.ShouldBe("1.1.0.60000");
105+
}
106+
}
107+
}

src/GitVersionCore.Tests/Model/CommitDateTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void CommitDateFormatTest(string format, string expectedOutcome)
2929
},
3030
new EffectiveConfiguration(
3131
AssemblyVersioningScheme.MajorMinorPatch, AssemblyFileVersioningScheme.MajorMinorPatch, "", "", "", VersioningMode.ContinuousDelivery, "", "", "", IncrementStrategy.Inherit,
32-
"", true, "", "", false, "", "", "", "", CommitMessageIncrementMode.Enabled, 4, 4, 4, Enumerable.Empty<IVersionFilter>(), false, true, format, false, 0)
32+
"", true, "", "", false, "", "", "", "", CommitMessageIncrementMode.Enabled, 4, 4, 4, Enumerable.Empty<IVersionFilter>(), false, true, format, false, 0, 0)
3333
);
3434

3535
Assert.That(formatValues.CommitDate, Is.EqualTo(expectedOutcome));

src/GitVersionCore.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"PreReleaseTagWithDash":"",
77
"PreReleaseLabel":"",
88
"PreReleaseNumber":"",
9-
"WeightedPreReleaseNumber":"",
9+
"WeightedPreReleaseNumber":0,
1010
"BuildMetaData":5,
1111
"BuildMetaDataPadded":"0005",
1212
"FullBuildMetaData":"5.Branch.feature-123.Sha.commitSha",

src/GitVersionCore.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInfoFormat.approved.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"PreReleaseTagWithDash":"",
77
"PreReleaseLabel":"",
88
"PreReleaseNumber":"",
9-
"WeightedPreReleaseNumber":"",
9+
"WeightedPreReleaseNumber":0,
1010
"BuildMetaData":5,
1111
"BuildMetaDataPadded":"0005",
1212
"FullBuildMetaData":"5.Branch.feature-123.Sha.commitSha",

src/GitVersionCore.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForStable.approved.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"PreReleaseTagWithDash":"",
77
"PreReleaseLabel":"",
88
"PreReleaseNumber":"",
9-
"WeightedPreReleaseNumber":"",
9+
"WeightedPreReleaseNumber":0,
1010
"BuildMetaData":5,
1111
"BuildMetaDataPadded":"0005",
1212
"FullBuildMetaData":"5.Branch.develop.Sha.commitSha",

src/GitVersionCore.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommitIsTagged.approved.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"PreReleaseTagWithDash":"",
77
"PreReleaseLabel":"",
88
"PreReleaseNumber":"",
9-
"WeightedPreReleaseNumber":"",
9+
"WeightedPreReleaseNumber":0,
1010
"BuildMetaData":5,
1111
"BuildMetaDataPadded":"0005",
1212
"FullBuildMetaData":"5.Sha.commitSha",

src/GitVersionCore.Tests/VersionConverters/Approved/WixFileTests.UpdateWixVersionFile.approved.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@
3030
<?define Sha="commitSha"?>
3131
<?define ShortSha="commitShortSha"?>
3232
<?define VersionSourceSha="versionSourceSha"?>
33-
<?define WeightedPreReleaseNumber=""?>
33+
<?define WeightedPreReleaseNumber="0"?>
3434
</Include>

0 commit comments

Comments
 (0)