Skip to content

Commit e7f8903

Browse files
committed
Using effective branch configuration
1 parent dc14bcf commit e7f8903

12 files changed

+57
-72
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ ignore:
118118
sha: []
119119
mode: ContinuousDelivery
120120
label: '{BranchName}'
121-
increment: Inherit
121+
increment: Patch
122122
prevent-increment-of-merged-branch-version: false
123123
track-merge-target: false
124124
track-merge-message: true

src/GitVersion.Core.Tests/IntegrationTests/VersionInCurrentBranchNameScenarios.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,6 @@ public void DoesNotTakeVersionFromNameOfRemoteReleaseBranchInCustomRemote()
6262

6363
fixture.LocalRepositoryFixture.Checkout("upstream/release/2.0.0");
6464

65-
fixture.LocalRepositoryFixture.AssertFullSemver("0.0.0-beta.1+6");
65+
fixture.LocalRepositoryFixture.AssertFullSemver("0.0.0-beta.1+6"); // This test fails with 2.0.0-beta.1+1
6666
}
6767
}

src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@ public void CanTakeVersionFromNameOfConfiguredReleaseBranch(string branchName, s
6060
fixture.Repository.MakeACommit();
6161
fixture.Repository.CreateBranch(branchName);
6262

63-
var configurationBuilder = GitFlowConfigurationBuilder.New
64-
.WithBranch("support", builder => builder.WithIsReleaseBranch(true));
65-
ConfigurationHelper configurationHelper = new(configurationBuilder.Build());
63+
var configuration = GitFlowConfigurationBuilder.New
64+
.WithBranch("support", builder => builder.WithIsReleaseBranch(true))
65+
.Build();
66+
ConfigurationHelper configurationHelper = new(configuration);
6667

6768
var gitRepository = fixture.Repository.ToGitRepository();
6869
var strategy = GetVersionStrategy(fixture.RepositoryPath, gitRepository, branchName, configurationHelper.Dictionary);
6970

70-
var configuration = GitFlowConfigurationBuilder.New.Build();
7171
var branchConfiguration = configuration.GetBranchConfiguration(branchName);
7272
var effectiveConfiguration = new EffectiveConfiguration(configuration, branchConfiguration);
7373

src/GitVersion.Core/Configuration/ConfigurationExtensions.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,6 @@ public static BranchConfiguration GetBranchConfiguration(this GitVersionConfigur
1919
Label = "{BranchName}",
2020
Increment = IncrementStrategy.Inherit
2121
};
22-
23-
if (branchConfiguration.Increment == IncrementStrategy.Inherit)
24-
return branchConfiguration;
25-
26-
var fallbackBranchConfiguration = GetFallbackBranchConfiguration(configuration);
27-
branchConfiguration.Increment ??= fallbackBranchConfiguration.Increment;
28-
if (branchConfiguration.Increment != IncrementStrategy.Inherit)
29-
{
30-
branchConfiguration = branchConfiguration.Inherit(fallbackBranchConfiguration);
31-
}
3222
return branchConfiguration;
3323
}
3424

src/GitVersion.Core/Configuration/EffectiveConfiguration.cs

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,20 @@ namespace GitVersion.Configuration;
99
/// </summary>
1010
public class EffectiveConfiguration
1111
{
12-
public EffectiveConfiguration(GitVersionConfiguration configuration, BranchConfiguration currentBranchConfig)
12+
public EffectiveConfiguration(GitVersionConfiguration configuration, BranchConfiguration branchConfiguration)
1313
{
1414
configuration.NotNull();
15-
currentBranchConfig.NotNull();
15+
branchConfiguration.NotNull();
1616

17-
var name = currentBranchConfig.Name;
17+
var fallbackBranchConfiguration = configuration.GetFallbackBranchConfiguration();
18+
branchConfiguration = branchConfiguration.Inherit(fallbackBranchConfiguration);
1819

19-
if (!currentBranchConfig.VersioningMode.HasValue)
20+
var name = branchConfiguration.Name;
21+
22+
if (!branchConfiguration.VersioningMode.HasValue)
2023
throw new Exception($"Configuration value for 'Versioning mode' for branch {name} has no value. (this should not happen, please report an issue)");
2124

22-
if (!currentBranchConfig.Increment.HasValue)
25+
if (!branchConfiguration.Increment.HasValue)
2326
throw new Exception($"Configuration value for 'Increment' for branch {name} has no value. (this should not happen, please report an issue)");
2427

2528
if (!configuration.AssemblyVersioningScheme.HasValue)
@@ -28,7 +31,7 @@ public EffectiveConfiguration(GitVersionConfiguration configuration, BranchConfi
2831
if (!configuration.AssemblyFileVersioningScheme.HasValue)
2932
throw new Exception("Configuration value for 'AssemblyFileVersioningScheme' has no value. (this should not happen, please report an issue)");
3033

31-
if (!currentBranchConfig.CommitMessageIncrementing.HasValue)
34+
if (!branchConfiguration.CommitMessageIncrementing.HasValue)
3235
throw new Exception("Configuration value for 'CommitMessageIncrementing' has no value. (this should not happen, please report an issue)");
3336

3437
if (!configuration.LabelPreReleaseWeight.HasValue)
@@ -39,29 +42,29 @@ public EffectiveConfiguration(GitVersionConfiguration configuration, BranchConfi
3942
AssemblyInformationalFormat = configuration.AssemblyInformationalFormat;
4043
AssemblyVersioningFormat = configuration.AssemblyVersioningFormat;
4144
AssemblyFileVersioningFormat = configuration.AssemblyFileVersioningFormat;
42-
VersioningMode = currentBranchConfig.VersioningMode.Value;
45+
VersioningMode = branchConfiguration.VersioningMode.Value;
4346
LabelPrefix = configuration.LabelPrefix;
44-
Label = currentBranchConfig.Label ?? string.Empty;
47+
Label = branchConfiguration.Label ?? string.Empty;
4548
NextVersion = configuration.NextVersion;
46-
Increment = currentBranchConfig.Increment.Value;
47-
BranchPrefixToTrim = currentBranchConfig.Regex;
48-
PreventIncrementOfMergedBranchVersion = currentBranchConfig.PreventIncrementOfMergedBranchVersion ?? false;
49-
LabelNumberPattern = currentBranchConfig.LabelNumberPattern;
50-
TrackMergeTarget = currentBranchConfig.TrackMergeTarget ?? false;
51-
TrackMergeMessage = currentBranchConfig.TrackMergeMessage ?? true;
49+
Increment = branchConfiguration.Increment.Value;
50+
BranchPrefixToTrim = branchConfiguration.Regex;
51+
PreventIncrementOfMergedBranchVersion = branchConfiguration.PreventIncrementOfMergedBranchVersion ?? false;
52+
LabelNumberPattern = branchConfiguration.LabelNumberPattern;
53+
TrackMergeTarget = branchConfiguration.TrackMergeTarget ?? false;
54+
TrackMergeMessage = branchConfiguration.TrackMergeMessage ?? true;
5255
MajorVersionBumpMessage = configuration.MajorVersionBumpMessage;
5356
MinorVersionBumpMessage = configuration.MinorVersionBumpMessage;
5457
PatchVersionBumpMessage = configuration.PatchVersionBumpMessage;
5558
NoBumpMessage = configuration.NoBumpMessage;
56-
CommitMessageIncrementing = currentBranchConfig.CommitMessageIncrementing.Value;
59+
CommitMessageIncrementing = branchConfiguration.CommitMessageIncrementing.Value;
5760
VersionFilters = configuration.Ignore.ToFilters();
58-
TracksReleaseBranches = currentBranchConfig.TracksReleaseBranches ?? false;
59-
IsReleaseBranch = currentBranchConfig.IsReleaseBranch ?? false;
60-
IsMainline = currentBranchConfig.IsMainline ?? false;
61+
TracksReleaseBranches = branchConfiguration.TracksReleaseBranches ?? false;
62+
IsReleaseBranch = branchConfiguration.IsReleaseBranch ?? false;
63+
IsMainline = branchConfiguration.IsMainline ?? false;
6164
CommitDateFormat = configuration.CommitDateFormat;
6265
UpdateBuildNumber = configuration.UpdateBuildNumber;
6366
SemanticVersionFormat = configuration.SemanticVersionFormat;
64-
PreReleaseWeight = currentBranchConfig.PreReleaseWeight ?? 0;
67+
PreReleaseWeight = branchConfiguration.PreReleaseWeight ?? 0;
6568
LabelPreReleaseWeight = configuration.LabelPreReleaseWeight.Value;
6669
}
6770

@@ -174,7 +177,7 @@ protected EffectiveConfiguration(AssemblyVersioningScheme assemblyVersioningSche
174177

175178
public bool UpdateBuildNumber { get; }
176179

177-
public SemanticVersionFormat SemanticVersionFormat { get; set; } = SemanticVersionFormat.Strict;
180+
public SemanticVersionFormat SemanticVersionFormat { get; set; }
178181

179182
public int PreReleaseWeight { get; }
180183

src/GitVersion.Core/Configuration/GitFlowConfigurationBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ private GitFlowConfigurationBuilder()
2525
VersioningMode = VersioningMode.ContinuousDelivery,
2626
Regex = string.Empty,
2727
Label = "{BranchName}",
28-
Increment = IncrementStrategy.Inherit,
28+
Increment = IncrementStrategy.Patch,
2929
CommitMessageIncrementing = CommitMessageIncrementMode.Enabled,
3030
PreventIncrementOfMergedBranchVersion = false,
3131
TrackMergeTarget = false,

src/GitVersion.Core/Configuration/GitHubFlowConfigurationBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ private GitHubFlowConfigurationBuilder()
2525
VersioningMode = VersioningMode.ContinuousDelivery,
2626
Regex = string.Empty,
2727
Label = "{BranchName}",
28-
Increment = IncrementStrategy.Inherit,
28+
Increment = IncrementStrategy.Patch,
2929
CommitMessageIncrementing = CommitMessageIncrementMode.Enabled,
3030
PreventIncrementOfMergedBranchVersion = false,
3131
TrackMergeTarget = false,

src/GitVersion.Core/GitVersionContext.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,10 @@ public EffectiveConfiguration GetEffectiveConfiguration(IBranch branch)
3737
BranchConfiguration branchConfiguration = Configuration.GetBranchConfiguration(branch);
3838
return new EffectiveConfiguration(Configuration, branchConfiguration);
3939
}
40+
41+
public EffectiveConfiguration GetEffectiveConfiguration(string branchName)
42+
{
43+
BranchConfiguration branchConfiguration = Configuration.GetBranchConfiguration(branchName);
44+
return new EffectiveConfiguration(Configuration, branchConfiguration);
45+
}
4046
}

src/GitVersion.Core/PublicAPI.Unshipped.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningScheme.get ->
152152
GitVersion.Configuration.EffectiveConfiguration.BranchPrefixToTrim.get -> string?
153153
GitVersion.Configuration.EffectiveConfiguration.CommitDateFormat.get -> string?
154154
GitVersion.Configuration.EffectiveConfiguration.CommitMessageIncrementing.get -> GitVersion.VersionCalculation.CommitMessageIncrementMode
155-
GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Configuration.GitVersionConfiguration! configuration, GitVersion.Configuration.BranchConfiguration! currentBranchConfig) -> void
155+
GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Configuration.GitVersionConfiguration! configuration, GitVersion.Configuration.BranchConfiguration! branchConfiguration) -> void
156156
GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Extensions.AssemblyVersioningScheme assemblyVersioningScheme, GitVersion.Extensions.AssemblyFileVersioningScheme assemblyFileVersioningScheme, string? assemblyInformationalFormat, string? assemblyVersioningFormat, string? assemblyFileVersioningFormat, GitVersion.VersionCalculation.VersioningMode versioningMode, string? labelPrefix, string! label, string? nextVersion, GitVersion.IncrementStrategy increment, string? branchPrefixToTrim, bool preventIncrementOfMergedBranchVersion, string? labelNumberPattern, bool trackMergeTarget, string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, GitVersion.VersionCalculation.CommitMessageIncrementMode commitMessageIncrementing, System.Collections.Generic.IEnumerable<GitVersion.VersionCalculation.IVersionFilter!>! versionFilters, bool tracksReleaseBranches, bool isReleaseBranch, bool isMainline, string? commitDateFormat, bool updateBuildNumber, GitVersion.SemanticVersionFormat semanticVersionFormat, int preReleaseWeight, int labelPreReleaseWeight) -> void
157157
GitVersion.Configuration.EffectiveConfiguration.Increment.get -> GitVersion.IncrementStrategy
158158
GitVersion.Configuration.EffectiveConfiguration.IsMainline.get -> bool
@@ -356,6 +356,7 @@ GitVersion.GitVersionContext.CurrentBranch.get -> GitVersion.IBranch!
356356
GitVersion.GitVersionContext.CurrentCommit.get -> GitVersion.ICommit?
357357
GitVersion.GitVersionContext.CurrentCommitTaggedVersion.get -> GitVersion.SemanticVersion?
358358
GitVersion.GitVersionContext.GetEffectiveConfiguration(GitVersion.IBranch! branch) -> GitVersion.Configuration.EffectiveConfiguration!
359+
GitVersion.GitVersionContext.GetEffectiveConfiguration(string! branchName) -> GitVersion.Configuration.EffectiveConfiguration!
359360
GitVersion.GitVersionContext.GitVersionContext(GitVersion.IBranch! currentBranch, GitVersion.ICommit? currentCommit, GitVersion.Configuration.GitVersionConfiguration! configuration, GitVersion.SemanticVersion? currentCommitTaggedVersion, int numberOfUncommittedChanges) -> void
360361
GitVersion.GitVersionContext.IsCurrentCommitTagged.get -> bool
361362
GitVersion.GitVersionContext.NumberOfUncommittedChanges.get -> int

src/GitVersion.Core/VersionCalculation/BaseVersionCalculators/VersionInBranchNameVersionStrategy.cs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@ public VersionInBranchNameVersionStrategy(IRepositoryStore repositoryStore, Lazy
1818

1919
public override IEnumerable<BaseVersion> GetBaseVersions(EffectiveBranchConfiguration configuration)
2020
{
21-
string nameWithoutOrigin = NameWithoutOrigin(configuration.Branch);
22-
var contextConfiguration = Context.Configuration;
23-
if (contextConfiguration.IsReleaseBranch(nameWithoutOrigin))
21+
if (!configuration.Value.IsReleaseBranch) yield break;
22+
23+
var versionInBranch = GetVersionInBranch(
24+
configuration.Branch.Name.Friendly, configuration.Value.LabelPrefix, configuration.Value.SemanticVersionFormat
25+
);
26+
if (versionInBranch != null)
2427
{
25-
var versionInBranch = GetVersionInBranch(configuration.Branch.Name.Friendly, contextConfiguration.LabelPrefix, contextConfiguration.SemanticVersionFormat);
26-
if (versionInBranch != null)
27-
{
28-
var commitBranchWasBranchedFrom = this.repositoryStore.FindCommitBranchWasBranchedFrom(configuration.Branch, contextConfiguration);
29-
var branchNameOverride = Context.CurrentBranch.Name.Friendly.RegexReplace("[-/]" + versionInBranch.Item1, string.Empty);
30-
yield return new BaseVersion("Version in branch name", false, versionInBranch.Item2, commitBranchWasBranchedFrom.Commit, branchNameOverride);
31-
}
28+
var commitBranchWasBranchedFrom = this.repositoryStore.FindCommitBranchWasBranchedFrom(
29+
configuration.Branch, Context.Configuration
30+
);
31+
var branchNameOverride = Context.CurrentBranch.Name.Friendly.RegexReplace("[-/]" + versionInBranch.Item1, string.Empty);
32+
yield return new BaseVersion("Version in branch name", false, versionInBranch.Item2, commitBranchWasBranchedFrom.Commit, branchNameOverride);
3233
}
3334
}
3435

@@ -45,8 +46,4 @@ public override IEnumerable<BaseVersion> GetBaseVersions(EffectiveBranchConfigur
4546

4647
return null;
4748
}
48-
49-
private static string NameWithoutOrigin(IBranch branch) => branch.IsRemote && branch.Name.Friendly.StartsWith("origin/")
50-
? branch.Name.Friendly.Substring("origin/".Length)
51-
: branch.Name.Friendly;
5249
}

0 commit comments

Comments
 (0)