Skip to content

Commit ee5b77a

Browse files
authored
Merge pull request #1383 from jkingry/feature/filter-tag-method-refactor-followup
Filter tag method refactor followup
2 parents 6bf4319 + 5109742 commit ee5b77a

File tree

2 files changed

+23
-26
lines changed

2 files changed

+23
-26
lines changed

src/GitVersionCore/GitRepoMetadataProvider.cs

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,25 @@ public GitRepoMetadataProvider(IRepository repository, Config configuration)
2424
this.configuration = configuration;
2525
}
2626

27+
public static IEnumerable<Tuple<Tag, SemanticVersion>> GetValidVersionTags(IRepository repository, string tagPrefixRegex, DateTimeOffset? olderThan = null)
28+
{
29+
var tags = new List<Tuple<Tag, SemanticVersion>>();
30+
31+
foreach (var tag in repository.Tags)
32+
{
33+
if (olderThan.HasValue && ((Commit)tag.PeeledTarget()).When() > olderThan.Value)
34+
continue;
35+
36+
SemanticVersion semver;
37+
if (SemanticVersion.TryParse(tag.FriendlyName, tagPrefixRegex, out semver))
38+
{
39+
tags.Add(Tuple.Create(tag, semver));
40+
}
41+
}
42+
43+
return tags;
44+
}
45+
2746
public IEnumerable<SemanticVersion> GetVersionTagsOnBranch(Branch branch, string tagPrefixRegex)
2847
{
2948
if (semanticVersionTagsOnBranchCache.ContainsKey(branch))
@@ -34,15 +53,7 @@ public IEnumerable<SemanticVersion> GetVersionTagsOnBranch(Branch branch, string
3453

3554
using (Logger.IndentLog(string.Format("Getting version tags from branch '{0}'.", branch.CanonicalName)))
3655
{
37-
var tags = new List<Tuple<Tag, SemanticVersion>>();
38-
foreach(var t in this.Repository.Tags)
39-
{
40-
SemanticVersion semver;
41-
if (SemanticVersion.TryParse(t.FriendlyName, tagPrefixRegex, out semver))
42-
{
43-
tags.Add(Tuple.Create(t, semver));
44-
}
45-
}
56+
var tags = GetValidVersionTags(this.Repository, tagPrefixRegex);
4657

4758
var versionTags = branch.Commits.SelectMany(c => tags.Where(t => c.Sha == t.Item1.Target.Sha).Select(t => t.Item2)).ToList();
4859

@@ -225,7 +236,7 @@ List<BranchCommit> GetMergeCommitsForBranch(Branch branch, Branch[] excludedBran
225236

226237
var currentBranchConfig = configuration.GetConfigForBranch(branch.NameWithoutRemote());
227238
var regexesToCheck = currentBranchConfig == null
228-
? new [] { ".*" } // Match anything if we can't find a branch config
239+
? new[] { ".*" } // Match anything if we can't find a branch config
229240
: currentBranchConfig.SourceBranches.Select(sb => configuration.Branches[sb].Regex);
230241
var branchMergeBases = Repository.Branches
231242
.ExcludingBranches(excludedBranches)

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,8 @@ public override IEnumerable<BaseVersion> GetVersions(GitVersionContext context)
1919

2020
public IEnumerable<BaseVersion> GetTaggedVersions(GitVersionContext context, Branch currentBranch, DateTimeOffset? olderThan)
2121
{
22-
var allTags = new List<Tuple<Tag, SemanticVersion>>();
23-
foreach(var tag in context.Repository.Tags)
24-
{
25-
if (olderThan.HasValue && ((Commit)tag.PeeledTarget()).When() > olderThan.Value)
26-
continue;
27-
28-
SemanticVersion version;
29-
30-
if (!SemanticVersion.TryParse(tag.FriendlyName, context.Configuration.GitTagPrefix, out version))
31-
{
32-
continue;
33-
}
34-
35-
allTags.Add(Tuple.Create(tag, version));
36-
}
37-
22+
var allTags = GitRepoMetadataProvider.GetValidVersionTags(context.Repository, context.Configuration.GitTagPrefix, olderThan);
23+
3824
var tagsOnBranch = currentBranch
3925
.Commits
4026
.SelectMany(commit => { return allTags.Where(t => IsValidTag(t.Item1, commit)); })

0 commit comments

Comments
 (0)