Skip to content

Commit 754d413

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 8087035 commit 754d413

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
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
@@ -216,6 +216,18 @@ public IBranch GetTargetBranch(string? targetBranchName)
216216

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

219+
public IBranch? FindMainBranch(Config configuration)
220+
{
221+
var mainBranchRegex = configuration.Branches[Config.MainBranchKey]?.Regex;
222+
if (mainBranchRegex == null)
223+
{
224+
return null;
225+
}
226+
227+
return this.repository.Branches.FirstOrDefault(b =>
228+
Regex.IsMatch(b.Name.Friendly, mainBranchRegex, RegexOptions.IgnoreCase));
229+
}
230+
219231
public IBranch? GetChosenBranch(Config configuration)
220232
{
221233
var developBranchRegex = configuration.Branches[Config.DevelopBranchKey]?.Regex;

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,16 @@ public class TrackReleaseBranchesVersionStrategy : VersionStrategyBase
2626
private readonly IRepositoryStore repositoryStore;
2727
private readonly VersionInBranchNameVersionStrategy releaseVersionStrategy;
2828
private readonly TaggedCommitVersionStrategy taggedCommitVersionStrategy;
29+
private readonly Config configuration;
30+
2931

3032
public TrackReleaseBranchesVersionStrategy(IRepositoryStore repositoryStore, Lazy<GitVersionContext> versionContext)
3133
: base(versionContext)
3234
{
3335
this.repositoryStore = repositoryStore.NotNull();
34-
3536
this.releaseVersionStrategy = new VersionInBranchNameVersionStrategy(repositoryStore, versionContext);
3637
this.taggedCommitVersionStrategy = new TaggedCommitVersionStrategy(repositoryStore, versionContext);
38+
this.configuration = versionContext.Value.Configuration.Configuration;
3739
}
3840

3941
public override IEnumerable<BaseVersion> GetVersions() =>
@@ -43,9 +45,7 @@ public override IEnumerable<BaseVersion> GetVersions() =>
4345

4446
private IEnumerable<BaseVersion> MainTagsVersions()
4547
{
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);
48+
var main = this.repositoryStore.FindMainBranch(this.configuration);
4949

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

0 commit comments

Comments
 (0)