Skip to content

Commit fc9d7f7

Browse files
committed
Implement code review suggestions.
1 parent 4966764 commit fc9d7f7

18 files changed

+38
-29
lines changed

BREAKING_CHANGES.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,12 @@
3838
* ManualDeployment (previously ContinuousDelivery)
3939
* ContinuousDelivery (previously ContinuousDeployment)
4040
* ContinuousDeployment (new)
41-
* On the configuration root level a new property with name `version-strategy` has been introduced with following values:
41+
* At the configuration root level, a new array called `strategies` has been introduced, which can consist of on or more following values:
4242
* ConfigNext
4343
* MergeMessage
4444
* TaggedCommit
4545
* TrackReleaseBranches
4646
* VersionInBranchName
47-
* NonTrunkBased = ConfigNext | MergeMessage | TaggedCommit | TrackReleaseBranches | VersionInBranchName,
4847
* TrunkBased
4948
5049
## v5.0.0

docs/input/docs/reference/configuration.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ commit-date-format: yyyy-MM-dd
5353
merge-message-formats: {}
5454
update-build-number: true
5555
semantic-version-format: Strict
56-
version-strategy: NonTrunkBased
56+
strategies:
57+
- ConfigNext, MergeMessage, TaggedCommit, TrackReleaseBranches, VersionInBranchName
5758
branches:
5859
develop:
5960
mode: ContinuousDeployment
@@ -686,13 +687,12 @@ Example of invalid `Strict`, but valid `Loose`
686687
[variables]: /docs/reference/variables
687688
[version-sources]: /docs/reference/version-sources
688689
689-
### version-strategy
690+
### strategies
690691
691692
Specifies which version strategy implementation (one ore more) will be used to determine the next version. Following values are supported and can be combined:
692693
* ConfigNext
693694
* MergeMessage
694695
* TaggedCommit
695696
* TrackReleaseBranches
696697
* VersionInBranchName
697-
* NonTrunkBased = ConfigNext,MergeMessage,TaggedCommit,TrackReleaseBranches,VersionInBranchName
698698
* TrunkBased

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ commit-date-format: yyyy-MM-dd
1111
merge-message-formats: {}
1212
update-build-number: true
1313
semantic-version-format: Strict
14-
version-strategy: NonTrunkBased
14+
strategies:
15+
- ConfigNext, MergeMessage, TaggedCommit, TrackReleaseBranches, VersionInBranchName
1516
branches:
1617
develop:
1718
label: alpha

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void OverwritesDefaultsWithProvidedConfig()
6060
public void CombineVersionStrategyConfigNextAndTaggedCommit()
6161
{
6262
// Arrange
63-
SetupConfigFileContent("version-strategy: ConfigNext,TaggedCommit");
63+
SetupConfigFileContent("strategies: [ConfigNext, TaggedCommit]");
6464

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

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

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

src/GitVersion.Configuration/ConfigurationBuilderBase.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ internal abstract class ConfigurationBuilderBase<TConfigurationBuilder> : IConfi
2424
private string? commitDateFormat;
2525
private bool updateBuildNumber;
2626
private SemanticVersionFormat semanticVersionFormat;
27-
private VersionStrategies versionStrategy;
27+
private VersionStrategies[] versionStrategies;
2828
private Dictionary<string, string> mergeMessageFormats = new();
2929
private readonly List<IReadOnlyDictionary<object, object?>> overrides = new();
3030
private readonly Dictionary<string, BranchConfigurationBuilder> branchConfigurationBuilders = new();
@@ -200,9 +200,9 @@ public virtual TConfigurationBuilder WithSemanticVersionFormat(SemanticVersionFo
200200
return (TConfigurationBuilder)this;
201201
}
202202

203-
public virtual TConfigurationBuilder WithVersionStrategy(VersionStrategies value)
203+
public virtual TConfigurationBuilder WithVersionStrategies(params VersionStrategies[] values)
204204
{
205-
this.versionStrategy = value;
205+
this.versionStrategies = values;
206206
return (TConfigurationBuilder)this;
207207
}
208208

@@ -328,7 +328,7 @@ public virtual TConfigurationBuilder WithConfiguration(IGitVersionConfiguration
328328
WithCommitDateFormat(value.CommitDateFormat);
329329
WithUpdateBuildNumber(value.UpdateBuildNumber);
330330
WithSemanticVersionFormat(value.SemanticVersionFormat);
331-
WithVersionStrategy(value.VersionStrategy);
331+
WithVersionStrategies(value.VersionStrategy);
332332
WithMergeMessageFormats(value.MergeMessageFormats);
333333
foreach (var (name, branchConfiguration) in value.Branches)
334334
{
@@ -385,7 +385,7 @@ public virtual IGitVersionConfiguration Build()
385385
CommitDateFormat = this.commitDateFormat,
386386
UpdateBuildNumber = this.updateBuildNumber,
387387
SemanticVersionFormat = this.semanticVersionFormat,
388-
VersionStrategy = this.versionStrategy,
388+
VersionStrategies = this.versionStrategies,
389389
Branches = branches,
390390
MergeMessageFormats = this.mergeMessageFormats,
391391
DeploymentMode = this.versioningMode,

src/GitVersion.Configuration/GitFlowConfigurationBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ private GitFlowConfigurationBuilder()
1818
NoBumpMessage = IncrementStrategyFinder.DefaultNoBumpPattern,
1919
PatchVersionBumpMessage = IncrementStrategyFinder.DefaultPatchPattern,
2020
SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat,
21-
VersionStrategy = ConfigurationConstants.DefaultVersionStrategy,
21+
VersionStrategies = ConfigurationConstants.DefaultVersionStrategies,
2222
TagPrefix = ConfigurationConstants.DefaultTagPrefix,
2323
VersionInBranchPattern = ConfigurationConstants.DefaultVersionInBranchPattern,
2424
TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight,

src/GitVersion.Configuration/GitHubFlowConfigurationBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ private GitHubFlowConfigurationBuilder()
1818
NoBumpMessage = IncrementStrategyFinder.DefaultNoBumpPattern,
1919
PatchVersionBumpMessage = IncrementStrategyFinder.DefaultPatchPattern,
2020
SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat,
21-
VersionStrategy = ConfigurationConstants.DefaultVersionStrategy,
21+
VersionStrategies = ConfigurationConstants.DefaultVersionStrategies,
2222
TagPrefix = ConfigurationConstants.DefaultTagPrefix,
2323
VersionInBranchPattern = ConfigurationConstants.DefaultVersionInBranchPattern,
2424
TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight,

src/GitVersion.Configuration/GitVersionConfiguration.cs

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

127-
[JsonPropertyName("version-strategy")]
128-
[JsonPropertyDescription($"Specifies which version strategy (one or more) will be used to determine the next version. Following values are available: 'ConfigNext', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'TrunkBased'.")]
129-
[JsonPropertyDefault(DefaultVersionStrategy)]
130-
public VersionStrategies VersionStrategy { get; internal set; }
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+
131+
[JsonIgnore]
132+
133+
VersionStrategies IGitVersionConfiguration.VersionStrategy => VersionStrategies.Length == 0
134+
? VersionCalculation.VersionStrategies.None : VersionStrategies.Aggregate((one, another) => one | another);
131135

132136
[JsonIgnore]
133137
IReadOnlyDictionary<string, IBranchConfiguration> IGitVersionConfiguration.Branches

src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ commit-date-format: yyyy-MM-dd
1010
merge-message-formats: {}
1111
update-build-number: true
1212
semantic-version-format: Strict
13-
versioning-strategy: 'ConfigNext,MergeMessage,TaggedCommit,TrackReleaseBranches,VersionInBranchName'
13+
strategies: [ConfigNext, MergeMessage, TaggedCommit, TrackReleaseBranches, VersionInBranchName]
1414
branches:
1515
develop:
1616
mode: ContinuousDeployment

0 commit comments

Comments
 (0)