Skip to content

Commit 0985daa

Browse files
committed
Use config to find the main branch by regex
Use the `Config` class to find the `main` branch via its configured regex instead of using a hard coded branch name.
1 parent 6340f2f commit 0985daa

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public interface IRepositoryStore
1818

1919
IBranch GetTargetBranch(string? targetBranchName);
2020
IBranch? FindBranch(string? branchName);
21+
IBranch? FindMainBranch(Config configuration);
2122
IBranch? GetChosenBranch(Config configuration);
2223
IEnumerable<IBranch> GetBranchesForCommit(ICommit commit);
2324
IEnumerable<IBranch> GetExcludedInheritBranches(Config configuration);

src/GitVersion.Core/Core/RepositoryStore.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,18 @@ public IBranch GetTargetBranch(string? targetBranchName)
126126

127127
public IBranch? FindBranch(string? branchName) => this.repository.Branches.FirstOrDefault(x => x.Name.EquivalentTo(branchName));
128128

129+
public IBranch? FindMainBranch(Config configuration)
130+
{
131+
var mainBranchRegex = configuration.Branches[Config.MainBranchKey]?.Regex;
132+
if (mainBranchRegex == null)
133+
{
134+
return null;
135+
}
136+
137+
return this.repository.Branches.FirstOrDefault(b =>
138+
Regex.IsMatch(b.Name.Friendly, mainBranchRegex, RegexOptions.IgnoreCase));
139+
}
140+
129141
public IBranch? GetChosenBranch(Config configuration)
130142
{
131143
var developBranchRegex = configuration.Branches[Config.DevelopBranchKey]?.Regex;

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using GitVersion.Common;
22
using GitVersion.Configuration;
33
using GitVersion.Extensions;
4-
using GitVersion.Model.Configuration;
54

65
namespace GitVersion.VersionCalculation;
76

@@ -26,14 +25,16 @@ public class TrackReleaseBranchesVersionStrategy : VersionStrategyBase
2625
private readonly IRepositoryStore repositoryStore;
2726
private readonly VersionInBranchNameVersionStrategy releaseVersionStrategy;
2827
private readonly TaggedCommitVersionStrategy taggedCommitVersionStrategy;
28+
private readonly Lazy<GitVersionContext> context;
29+
2930

3031
public TrackReleaseBranchesVersionStrategy(IRepositoryStore repositoryStore, Lazy<GitVersionContext> versionContext)
3132
: base(versionContext)
3233
{
3334
this.repositoryStore = repositoryStore.NotNull();
34-
3535
this.releaseVersionStrategy = new VersionInBranchNameVersionStrategy(repositoryStore, versionContext);
3636
this.taggedCommitVersionStrategy = new TaggedCommitVersionStrategy(repositoryStore, versionContext);
37+
this.context = versionContext.NotNull();
3738
}
3839

3940
public override IEnumerable<BaseVersion> GetVersions() =>
@@ -43,9 +44,8 @@ public override IEnumerable<BaseVersion> GetVersions() =>
4344

4445
private IEnumerable<BaseVersion> MainTagsVersions()
4546
{
46-
var main = this.repositoryStore.FindBranch(Config.MainBranchKey)
47-
// For compatibility reason try to find `master` if `main` cannot be found
48-
?? this.repositoryStore.FindBranch(Config.MasterBranchKey);
47+
var configuration = this.context.Value.Configuration.Configuration;
48+
var main = this.repositoryStore.FindMainBranch(configuration);
4949

5050
return main != null
5151
? this.taggedCommitVersionStrategy.GetTaggedVersions(main, null)

0 commit comments

Comments
 (0)