Skip to content

Commit 9faa790

Browse files
committed
Fix VersionInBranchNameVersionStrategy only considers the releae branch
1 parent 4531e3c commit 9faa790

File tree

3 files changed

+44
-18
lines changed

3 files changed

+44
-18
lines changed

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

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,29 @@ public void CanTakeVersionFromReleaseBranch()
4040
using var fixture = new EmptyRepositoryFixture();
4141

4242
const string taggedVersion = "1.0.3";
43-
fixture.Repository.MakeATaggedCommit(taggedVersion);
43+
fixture.MakeATaggedCommit(taggedVersion);
4444
fixture.Repository.MakeCommits(5);
45-
fixture.Repository.CreateBranch("release/2.0.0-LTS");
46-
Commands.Checkout(fixture.Repository, "release/2.0.0-LTS");
45+
fixture.BranchTo("release/2.0.0-LTS");
46+
fixture.MakeACommit();
47+
48+
fixture.AssertFullSemver("2.0.0-LTS.1+1", configuration);
49+
}
50+
51+
[Test]
52+
public void CanTakeVersionFromHotfixBranch()
53+
{
54+
var configuration = GitFlowConfigurationBuilder.New
55+
.WithBranch("hotfix", _ => _.WithLabel("{BranchName}"))
56+
.Build();
57+
58+
using var fixture = new EmptyRepositoryFixture();
59+
60+
const string taggedVersion = "1.0.3";
61+
fixture.MakeATaggedCommit(taggedVersion);
62+
fixture.BranchTo("hotfix/1.0.5-LTS");
63+
fixture.MakeACommit();
4764

48-
fixture.AssertFullSemver("2.0.0-LTS.1+0", configuration);
65+
fixture.AssertFullSemver("1.0.5-LTS.1+1", configuration);
4966
}
5067

5168
[Test]

src/GitVersion.Core/PublicAPI.Unshipped.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ GitVersion.Configuration.EffectiveConfiguration.TrackMergeTarget.get -> bool
134134
GitVersion.Configuration.EffectiveConfiguration.TracksReleaseBranches.get -> bool
135135
GitVersion.Configuration.EffectiveConfiguration.UpdateBuildNumber.get -> bool
136136
GitVersion.Configuration.EffectiveConfiguration.VersionFilters.get -> System.Collections.Generic.IEnumerable<GitVersion.VersionCalculation.IVersionFilter!>!
137+
GitVersion.Configuration.EffectiveConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex!
137138
GitVersion.Configuration.EffectiveConfiguration.VersioningMode.get -> GitVersion.VersionCalculation.VersioningMode
138139
GitVersion.Configuration.IBranchConfiguration
139140
GitVersion.Configuration.IBranchConfiguration.CommitMessageIncrementing.get -> GitVersion.VersionCalculation.CommitMessageIncrementMode?
@@ -180,6 +181,8 @@ GitVersion.Configuration.IGitVersionConfiguration.NoBumpMessage.get -> string?
180181
GitVersion.Configuration.IGitVersionConfiguration.PatchVersionBumpMessage.get -> string?
181182
GitVersion.Configuration.IGitVersionConfiguration.SemanticVersionFormat.get -> GitVersion.SemanticVersionFormat
182183
GitVersion.Configuration.IGitVersionConfiguration.UpdateBuildNumber.get -> bool
184+
GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchPattern.get -> string?
185+
GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex!
183186
GitVersion.Configuration.IGitVersionConfiguration.Workflow.get -> string?
184187
GitVersion.Configuration.IIgnoreConfiguration
185188
GitVersion.Configuration.IIgnoreConfiguration.Before.get -> System.DateTimeOffset?
@@ -554,6 +557,7 @@ GitVersion.OutputVariables.VersionVariablesJsonModel.WeightedPreReleaseNumber.ge
554557
GitVersion.OutputVariables.VersionVariablesJsonModel.WeightedPreReleaseNumber.set -> void
555558
GitVersion.OutputVariables.VersionVariablesJsonStringConverter
556559
GitVersion.OutputVariables.VersionVariablesJsonStringConverter.VersionVariablesJsonStringConverter() -> void
560+
GitVersion.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? labelPrefix, GitVersion.SemanticVersionFormat format) -> bool
557561
GitVersion.RefSpecDirection
558562
GitVersion.RefSpecDirection.Fetch = 0 -> GitVersion.RefSpecDirection
559563
GitVersion.RefSpecDirection.Push = 1 -> GitVersion.RefSpecDirection

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

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,28 @@ public override IEnumerable<BaseVersion> GetBaseVersions(EffectiveBranchConfigur
2020
{
2121
if (!configuration.Value.IsReleaseBranch) yield break;
2222

23-
if (configuration.Branch.Name.TryGetSemanticVersion(out var result, configuration.Value.VersionInBranchRegex,
24-
configuration.Value.LabelPrefix, configuration.Value.SemanticVersionFormat))
23+
foreach (var branch in new[] { Context.CurrentBranch, configuration.Branch })
2524
{
26-
var commitBranchWasBranchedFrom = this.repositoryStore.FindCommitBranchWasBranchedFrom(
27-
configuration.Branch, Context.Configuration
28-
);
29-
30-
string? branchNameOverride = null;
31-
if (Context.CurrentBranch.Name.Equals(configuration.Branch.Name)
32-
|| Context.Configuration.GetBranchConfiguration(Context.CurrentBranch.Name).Label is null)
25+
if (branch.Name.TryGetSemanticVersion(out var result, configuration.Value.VersionInBranchRegex,
26+
configuration.Value.LabelPrefix, configuration.Value.SemanticVersionFormat))
3327
{
34-
branchNameOverride = result.Name;
35-
}
28+
var commitBranchWasBranchedFrom = this.repositoryStore.FindCommitBranchWasBranchedFrom(
29+
configuration.Branch, Context.Configuration
30+
);
31+
32+
string? branchNameOverride = null;
33+
if (Context.CurrentBranch.Name.Equals(branch.Name)
34+
|| Context.Configuration.GetBranchConfiguration(Context.CurrentBranch.Name).Label is null)
35+
{
36+
branchNameOverride = result.Name;
37+
}
3638

37-
yield return new BaseVersion(
38-
"Version in branch name", false, result.Value, commitBranchWasBranchedFrom.Commit, branchNameOverride
39-
);
39+
yield return new BaseVersion(
40+
"Version in branch name", false, result.Value, commitBranchWasBranchedFrom.Commit, branchNameOverride
41+
);
42+
yield break;
43+
}
4044
}
45+
4146
}
4247
}

0 commit comments

Comments
 (0)