Skip to content

Commit 9b55d9f

Browse files
authored
Merge pull request #2413 from gerwinjansen/GitVersion-calculating-wrong-version-when-building-a-tag
Git version calculating wrong version when building a tag
2 parents 14fc094 + 2bdebfa commit 9b55d9f

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/GitVersionCore.Tests/IntegrationTests/TagCheckoutScenarios.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,24 @@ public void GivenARepositoryWithSingleCommitAndSingleBranch()
2828

2929
fixture.AssertFullSemver(taggedVersion);
3030
}
31+
32+
[Test]
33+
public void GivenARepositoryWithTwoTagsAndADevelopBranch()
34+
{
35+
using var fixture = new EmptyRepositoryFixture();
36+
const string firstVersion = "1.0";
37+
const string hotfixVersion = "1.0.1";
38+
39+
fixture.MakeACommit("init master");
40+
fixture.ApplyTag(firstVersion);
41+
fixture.MakeACommit("hotfix");
42+
fixture.ApplyTag(hotfixVersion);
43+
fixture.BranchTo("develop");
44+
fixture.MakeACommit("new feature");
45+
fixture.Checkout(hotfixVersion);
46+
fixture.BranchTo("tags/1.0.1");
47+
48+
fixture.AssertFullSemver(hotfixVersion);
49+
}
3150
}
3251
}

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ internal IEnumerable<BaseVersion> GetTaggedVersions(Branch currentBranch, DateTi
3030
{
3131
var allTags = repositoryMetadataProvider.GetValidVersionTags(Context.Configuration.GitTagPrefix, olderThan);
3232

33-
var tagsOnBranch = currentBranch
33+
var taggedVersions = currentBranch
3434
.Commits
3535
.SelectMany(commit => { return allTags.Where(t => IsValidTag(t.Item1, commit)); })
3636
.Select(t =>
@@ -40,11 +40,12 @@ internal IEnumerable<BaseVersion> GetTaggedVersions(Branch currentBranch, DateTi
4040

4141
return null;
4242
})
43-
.Where(a => a != null)
44-
.Take(5)
43+
.Where(versionTaggedCommit => versionTaggedCommit != null)
44+
.Select(versionTaggedCommit => CreateBaseVersion(Context, versionTaggedCommit))
4545
.ToList();
4646

47-
return tagsOnBranch.Select(t => CreateBaseVersion(Context, t));
47+
var taggedVersionsOnCurrentCommit = taggedVersions.Where(version => !version.ShouldIncrement).ToList();
48+
return taggedVersionsOnCurrentCommit.Any() ? taggedVersionsOnCurrentCommit : taggedVersions;
4849
}
4950

5051
private BaseVersion CreateBaseVersion(GitVersionContext context, VersionTaggedCommit version)

0 commit comments

Comments
 (0)