From dfda6f8899afe7979baa410c8478d15bec392c5f Mon Sep 17 00:00:00 2001 From: Joseph Kingry Date: Mon, 12 Mar 2018 13:39:43 -0400 Subject: [PATCH 1/2] Small formatting changes - as requested in #1374 --- src/GitVersionCore/GitRepoMetadataProvider.cs | 4 ++-- .../BaseVersionCalculators/TaggedCommitVersionStrategy.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GitVersionCore/GitRepoMetadataProvider.cs b/src/GitVersionCore/GitRepoMetadataProvider.cs index b60829ab67..8c72d00481 100644 --- a/src/GitVersionCore/GitRepoMetadataProvider.cs +++ b/src/GitVersionCore/GitRepoMetadataProvider.cs @@ -35,7 +35,7 @@ public IEnumerable GetVersionTagsOnBranch(Branch branch, string using (Logger.IndentLog(string.Format("Getting version tags from branch '{0}'.", branch.CanonicalName))) { var tags = new List>(); - foreach(var t in this.Repository.Tags) + foreach (var t in this.Repository.Tags) { SemanticVersion semver; if (SemanticVersion.TryParse(t.FriendlyName, tagPrefixRegex, out semver)) @@ -225,7 +225,7 @@ List GetMergeCommitsForBranch(Branch branch, Branch[] excludedBran var currentBranchConfig = configuration.GetConfigForBranch(branch.NameWithoutRemote()); var regexesToCheck = currentBranchConfig == null - ? new [] { ".*" } // Match anything if we can't find a branch config + ? new[] { ".*" } // Match anything if we can't find a branch config : currentBranchConfig.SourceBranches.Select(sb => configuration.Branches[sb].Regex); var branchMergeBases = Repository.Branches .ExcludingBranches(excludedBranches) diff --git a/src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs b/src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs index 332862923e..da5972cdd1 100644 --- a/src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs +++ b/src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs @@ -20,7 +20,7 @@ public override IEnumerable GetVersions(GitVersionContext context) public IEnumerable GetTaggedVersions(GitVersionContext context, Branch currentBranch, DateTimeOffset? olderThan) { var allTags = new List>(); - foreach(var tag in context.Repository.Tags) + foreach (var tag in context.Repository.Tags) { if (olderThan.HasValue && ((Commit)tag.PeeledTarget()).When() > olderThan.Value) continue; From 51097420590688ec32168fda797899b0143e8ad5 Mon Sep 17 00:00:00 2001 From: Joseph Kingry Date: Mon, 12 Mar 2018 14:35:22 -0400 Subject: [PATCH 2/2] Factored out version-able tag filter logic into a method As requested in pull request #1374 --- src/GitVersionCore/GitRepoMetadataProvider.cs | 29 +++++++++++++------ .../TaggedCommitVersionStrategy.cs | 18 ++---------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/GitVersionCore/GitRepoMetadataProvider.cs b/src/GitVersionCore/GitRepoMetadataProvider.cs index 8c72d00481..4416d79c3c 100644 --- a/src/GitVersionCore/GitRepoMetadataProvider.cs +++ b/src/GitVersionCore/GitRepoMetadataProvider.cs @@ -24,6 +24,25 @@ public GitRepoMetadataProvider(IRepository repository, Config configuration) this.configuration = configuration; } + public static IEnumerable> GetValidVersionTags(IRepository repository, string tagPrefixRegex, DateTimeOffset? olderThan = null) + { + var tags = new List>(); + + foreach (var tag in repository.Tags) + { + if (olderThan.HasValue && ((Commit)tag.PeeledTarget()).When() > olderThan.Value) + continue; + + SemanticVersion semver; + if (SemanticVersion.TryParse(tag.FriendlyName, tagPrefixRegex, out semver)) + { + tags.Add(Tuple.Create(tag, semver)); + } + } + + return tags; + } + public IEnumerable GetVersionTagsOnBranch(Branch branch, string tagPrefixRegex) { if (semanticVersionTagsOnBranchCache.ContainsKey(branch)) @@ -34,15 +53,7 @@ public IEnumerable GetVersionTagsOnBranch(Branch branch, string using (Logger.IndentLog(string.Format("Getting version tags from branch '{0}'.", branch.CanonicalName))) { - var tags = new List>(); - foreach (var t in this.Repository.Tags) - { - SemanticVersion semver; - if (SemanticVersion.TryParse(t.FriendlyName, tagPrefixRegex, out semver)) - { - tags.Add(Tuple.Create(t, semver)); - } - } + var tags = GetValidVersionTags(this.Repository, tagPrefixRegex); var versionTags = branch.Commits.SelectMany(c => tags.Where(t => c.Sha == t.Item1.Target.Sha).Select(t => t.Item2)).ToList(); diff --git a/src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs b/src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs index da5972cdd1..e228d41fd9 100644 --- a/src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs +++ b/src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs @@ -19,22 +19,8 @@ public override IEnumerable GetVersions(GitVersionContext context) public IEnumerable GetTaggedVersions(GitVersionContext context, Branch currentBranch, DateTimeOffset? olderThan) { - var allTags = new List>(); - foreach (var tag in context.Repository.Tags) - { - if (olderThan.HasValue && ((Commit)tag.PeeledTarget()).When() > olderThan.Value) - continue; - - SemanticVersion version; - - if (!SemanticVersion.TryParse(tag.FriendlyName, context.Configuration.GitTagPrefix, out version)) - { - continue; - } - - allTags.Add(Tuple.Create(tag, version)); - } - + var allTags = GitRepoMetadataProvider.GetValidVersionTags(context.Repository, context.Configuration.GitTagPrefix, olderThan); + var tagsOnBranch = currentBranch .Commits .SelectMany(commit => { return allTags.Where(t => IsValidTag(t.Item1, commit)); })