Skip to content

Commit b721d45

Browse files
committed
Rename ConfigNext to ConfigNextVersion and ensure that the array of version strategy is flat.
1 parent fc9d7f7 commit b721d45

File tree

11 files changed

+48
-27
lines changed

11 files changed

+48
-27
lines changed

BREAKING_CHANGES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
* ContinuousDelivery (previously ContinuousDeployment)
4040
* ContinuousDeployment (new)
4141
* At the configuration root level, a new array called `strategies` has been introduced, which can consist of on or more following values:
42-
* ConfigNext
42+
* ConfigNextVersion
4343
* MergeMessage
4444
* TaggedCommit
4545
* TrackReleaseBranches

docs/input/docs/reference/configuration.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,14 @@ merge-message-formats: {}
5454
update-build-number: true
5555
semantic-version-format: Strict
5656
strategies:
57-
- ConfigNext, MergeMessage, TaggedCommit, TrackReleaseBranches, VersionInBranchName
57+
- ConfigNextVersion
58+
- MergeMessage
59+
- TaggedCommit
60+
- TrackReleaseBranches
61+
- VersionInBranchName
5862
branches:
5963
develop:
60-
mode: ContinuousDeployment
64+
mode: ContinuousDelivery
6165
label: alpha
6266
increment: Minor
6367
prevent-increment-of-merged-branch-version: false
@@ -70,6 +74,7 @@ branches:
7074
is-main-branch: false
7175
pre-release-weight: 0
7276
main:
77+
mode: ContinuousDeployment
7378
label: ''
7479
increment: Patch
7580
prevent-increment-of-merged-branch-version: true
@@ -100,10 +105,10 @@ branches:
100105
is-main-branch: false
101106
pre-release-weight: 30000
102107
feature:
103-
mode: ContinuousDelivery
108+
mode: ManualDeployment
104109
label: '{BranchName}'
105110
increment: Inherit
106-
regex: ^features?[/-]
111+
regex: ^features?[/-](?<BranchName>.+)
107112
source-branches:
108113
- develop
109114
- main
@@ -129,7 +134,7 @@ branches:
129134
is-source-branch-for: []
130135
pre-release-weight: 30000
131136
hotfix:
132-
mode: ContinuousDelivery
137+
mode: ManualDeployment
133138
label: beta
134139
increment: Inherit
135140
regex: ^hotfix(es)?[/-]
@@ -155,10 +160,10 @@ branches:
155160
is-main-branch: true
156161
pre-release-weight: 55000
157162
unknown:
158-
mode: ContinuousDelivery
163+
mode: ManualDeployment
159164
label: '{BranchName}'
160165
increment: Inherit
161-
regex: .*
166+
regex: (?<BranchName>.+)
162167
source-branches:
163168
- main
164169
- develop
@@ -170,7 +175,7 @@ branches:
170175
is-source-branch-for: []
171176
ignore:
172177
sha: []
173-
mode: ContinuousDelivery
178+
mode: ManualDeployment
174179
label: '{BranchName}'
175180
increment: Inherit
176181
prevent-increment-of-merged-branch-version: false
@@ -183,6 +188,7 @@ is-source-branch-for: []
183188
tracks-release-branches: false
184189
is-release-branch: false
185190
is-main-branch: false
191+
186192
```
187193
188194
The details of the available options are as follows:
@@ -690,7 +696,7 @@ Example of invalid `Strict`, but valid `Loose`
690696
### strategies
691697
692698
Specifies which version strategy implementation (one ore more) will be used to determine the next version. Following values are supported and can be combined:
693-
* ConfigNext
699+
* ConfigNextVersion
694700
* MergeMessage
695701
* TaggedCommit
696702
* TrackReleaseBranches

src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,14 @@ merge-message-formats: {}
1212
update-build-number: true
1313
semantic-version-format: Strict
1414
strategies:
15-
- ConfigNext, MergeMessage, TaggedCommit, TrackReleaseBranches, VersionInBranchName
15+
- ConfigNextVersion
16+
- MergeMessage
17+
- TaggedCommit
18+
- TrackReleaseBranches
19+
- VersionInBranchName
1620
branches:
1721
develop:
22+
mode: ContinuousDelivery
1823
label: alpha
1924
increment: Minor
2025
prevent-increment-of-merged-branch-version: false
@@ -27,6 +32,7 @@ branches:
2732
is-main-branch: false
2833
pre-release-weight: 0
2934
main:
35+
mode: ContinuousDelivery
3036
label: ''
3137
increment: Patch
3238
prevent-increment-of-merged-branch-version: true
@@ -41,7 +47,6 @@ branches:
4147
is-main-branch: true
4248
pre-release-weight: 55000
4349
release:
44-
mode: ManualDeployment
4550
label: beta
4651
increment: None
4752
prevent-increment-of-merged-branch-version: true
@@ -100,6 +105,7 @@ branches:
100105
is-release-branch: true
101106
pre-release-weight: 30000
102107
support:
108+
mode: ContinuousDelivery
103109
label: ''
104110
increment: Patch
105111
prevent-increment-of-merged-branch-version: true
@@ -128,7 +134,7 @@ branches:
128134
is-source-branch-for: []
129135
ignore:
130136
sha: []
131-
mode: ContinuousDelivery
137+
mode: ManualDeployment
132138
label: '{BranchName}'
133139
increment: Inherit
134140
prevent-increment-of-merged-branch-version: false

src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,13 @@ public void OverwritesDefaultsWithProvidedConfig()
6060
public void CombineVersionStrategyConfigNextAndTaggedCommit()
6161
{
6262
// Arrange
63-
SetupConfigFileContent("strategies: [ConfigNext, TaggedCommit]");
63+
SetupConfigFileContent("strategies: [ConfigNextVersion, TaggedCommit]");
6464

6565
// Act
6666
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
6767

6868
// Assert
69-
configuration.VersionStrategy.ShouldBe(VersionStrategies.ConfigNext | VersionStrategies.TaggedCommit);
69+
configuration.VersionStrategy.ShouldBe(VersionStrategies.ConfigNextVersion | VersionStrategies.TaggedCommit);
7070
}
7171

7272
[Test]

src/GitVersion.Configuration.Tests/Configuration/Init/InitScenarios.CanSetNextVersion.approved.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ next-version: 2.0.0
22
merge-message-formats: {}
33
update-build-number: true
44
semantic-version-format: Strict
5-
strategies:
6-
- None
5+
strategies: []
76
branches: {}
87
ignore:
98
sha: []

src/GitVersion.Configuration/ConfigurationBuilderBase.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,19 @@ public virtual TConfigurationBuilder WithSemanticVersionFormat(SemanticVersionFo
201201
}
202202

203203
public virtual TConfigurationBuilder WithVersionStrategies(params VersionStrategies[] values)
204+
=> WithVersionStrategies((IEnumerable<VersionStrategies>)values);
205+
206+
public virtual TConfigurationBuilder WithVersionStrategies(IEnumerable<VersionStrategies> values)
204207
{
205-
this.versionStrategies = values;
208+
HashSet<VersionStrategies> versionStrategies = new();
209+
foreach (var versionStrategy in values)
210+
{
211+
versionStrategies.AddRange(
212+
Enum.GetValues<VersionStrategies>().Where(
213+
element => element != VersionStrategies.None && versionStrategy.HasFlag(element))
214+
);
215+
}
216+
this.versionStrategies = versionStrategies.ToArray();
206217
return (TConfigurationBuilder)this;
207218
}
208219

src/GitVersion.Configuration/GitVersionConfiguration.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,15 +124,14 @@ public string? NextVersion
124124
[JsonPropertyDefault(DefaultSemanticVersionFormat)]
125125
public SemanticVersionFormat SemanticVersionFormat { get; internal set; }
126126

127-
[JsonPropertyName("strategies")]
128-
[JsonPropertyDescription($"Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfigNext', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'TrunkBased'.")]
129-
public VersionStrategies[] VersionStrategies { get; internal set; } = [];
130-
131127
[JsonIgnore]
132-
133128
VersionStrategies IGitVersionConfiguration.VersionStrategy => VersionStrategies.Length == 0
134129
? VersionCalculation.VersionStrategies.None : VersionStrategies.Aggregate((one, another) => one | another);
135130

131+
[JsonPropertyName("strategies")]
132+
[JsonPropertyDescription($"Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfigNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'TrunkBased'.")]
133+
public VersionStrategies[] VersionStrategies { get; internal set; } = [];
134+
136135
[JsonIgnore]
137136
IReadOnlyDictionary<string, IBranchConfiguration> IGitVersionConfiguration.Branches
138137
=> Branches.ToDictionary(element => element.Key, element => (IBranchConfiguration)element.Value);

src/GitVersion.Core/Configuration/ConfigurationConstants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal static class ConfigurationConstants
1515
public const AssemblyFileVersioningScheme DefaultAssemblyFileVersioningScheme = AssemblyFileVersioningScheme.MajorMinorPatch;
1616
public const SemanticVersionFormat DefaultSemanticVersionFormat = SemanticVersionFormat.Strict;
1717
public static readonly VersionStrategies[] DefaultVersionStrategies = [
18-
VersionStrategies.ConfigNext,
18+
VersionStrategies.ConfigNextVersion,
1919
VersionStrategies.MergeMessage,
2020
VersionStrategies.TaggedCommit,
2121
VersionStrategies.TrackReleaseBranches,

src/GitVersion.Core/PublicAPI.Unshipped.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,7 @@ GitVersion.VersionCalculation.VersionCalculationModule
724724
GitVersion.VersionCalculation.VersionCalculationModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void
725725
GitVersion.VersionCalculation.VersionCalculationModule.VersionCalculationModule() -> void
726726
GitVersion.VersionCalculation.VersionStrategies
727-
GitVersion.VersionCalculation.VersionStrategies.ConfigNext = 1 -> GitVersion.VersionCalculation.VersionStrategies
727+
GitVersion.VersionCalculation.VersionStrategies.ConfigNextVersion = 1 -> GitVersion.VersionCalculation.VersionStrategies
728728
GitVersion.VersionCalculation.VersionStrategies.MergeMessage = 2 -> GitVersion.VersionCalculation.VersionStrategies
729729
GitVersion.VersionCalculation.VersionStrategies.None = 0 -> GitVersion.VersionCalculation.VersionStrategies
730730
GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 4 -> GitVersion.VersionCalculation.VersionStrategies

src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfigNextVersionVersionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ internal class ConfigNextVersionVersionStrategy(Lazy<GitVersionContext> versionC
1212
{
1313
public override IEnumerable<BaseVersion> GetBaseVersions(EffectiveBranchConfiguration configuration)
1414
{
15-
if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.ConfigNext))
15+
if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.ConfigNextVersion))
1616
yield break;
1717

1818
var contextConfiguration = Context.Configuration;

0 commit comments

Comments
 (0)