Skip to content

Commit 9ec391e

Browse files
committed
When commit is tagged, do not add commit count of 0. Leave empty (removes +0 from all tagged commit versions).
1 parent 1a1e477 commit 9ec391e

File tree

8 files changed

+49
-26
lines changed

8 files changed

+49
-26
lines changed

GitVersionCore.Tests/IntegrationTests/DevelopScenarios.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public void WhenDevelopBranchedFromTaggedCommitOnMasterVersionDoesNotChange()
1212
{
1313
fixture.Repository.MakeATaggedCommit("1.0.0");
1414
fixture.Repository.CreateBranch("develop").Checkout();
15-
fixture.AssertFullSemver("1.0.0+0");
15+
fixture.AssertFullSemver("1.0.0");
1616
}
1717
}
1818

@@ -85,7 +85,7 @@ public void CanHandleContinuousDelivery()
8585
fixture.Repository.MakeATaggedCommit("1.0.0");
8686
fixture.Repository.CreateBranch("develop").Checkout();
8787
fixture.Repository.MakeATaggedCommit("1.1.0-alpha7");
88-
fixture.AssertFullSemver("1.1.0-alpha.7+0");
88+
fixture.AssertFullSemver("1.1.0-alpha.7");
8989
}
9090
}
9191

GitVersionCore.Tests/IntegrationTests/HotfixBranchScenarios.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public void PatchLatestReleaseExample()
1717
fixture.Repository.MakeACommit();
1818
fixture.AssertFullSemver("1.2.1-beta.1+1");
1919
fixture.Repository.ApplyTag("1.2.1-beta.1");
20-
fixture.AssertFullSemver("1.2.1-beta.1+1");
20+
fixture.AssertFullSemver("1.2.1-beta.1");
2121
fixture.Repository.MakeACommit();
2222
fixture.AssertFullSemver("1.2.1-beta.2+2");
2323

@@ -29,7 +29,7 @@ public void PatchLatestReleaseExample()
2929
fixture.AssertFullSemver("1.2.1+0");
3030

3131
fixture.Repository.ApplyTag("1.2.1");
32-
fixture.AssertFullSemver("1.2.1+0");
32+
fixture.AssertFullSemver("1.2.1");
3333

3434
// Verify develop version
3535
fixture.Repository.Checkout("develop");
@@ -52,24 +52,25 @@ public void PatchOlderReleaseExample()
5252
{
5353
// Merge hotfix branch to support
5454
fixture.Repository.CreateBranch("support-1.1", (Commit)fixture.Repository.Tags.Single(t => t.Name == "1.1.0").Target).Checkout();
55-
fixture.AssertFullSemver("1.1.0+0");
56-
fixture.DumpGraph();
55+
fixture.AssertFullSemver("1.1.0");
5756

5857
// create hotfix branch
5958
fixture.Repository.CreateBranch("hotfix-1.1.1").Checkout();
60-
61-
fixture.AssertFullSemver("1.1.1-beta.1+0");
59+
fixture.AssertFullSemver("1.1.0"); // We are still on a tagged commit
6260
fixture.Repository.MakeACommit();
61+
6362
fixture.AssertFullSemver("1.1.1-beta.1+1");
63+
fixture.Repository.MakeACommit();
64+
fixture.AssertFullSemver("1.1.1-beta.1+2");
6465

6566
// Create feature branch off hotfix branch and complete
6667
fixture.Repository.CreateBranch("feature/fix").Checkout();
67-
fixture.AssertFullSemver("1.1.1-fix.1+1");
68-
fixture.Repository.MakeACommit();
6968
fixture.AssertFullSemver("1.1.1-fix.1+2");
69+
fixture.Repository.MakeACommit();
70+
fixture.AssertFullSemver("1.1.1-fix.1+3");
7071

7172
fixture.Repository.CreatePullRequest("feature/fix", "hotfix-1.1.1", isRemotePr: false);
72-
fixture.AssertFullSemver("1.1.1-PullRequest.2+3");
73+
fixture.AssertFullSemver("1.1.1-PullRequest.2+4");
7374
fixture.Repository.Checkout("hotfix-1.1.1");
7475
fixture.Repository.MergeNoFF("feature/fix", Constants.SignatureNow());
7576
fixture.AssertFullSemver("1.1.1-beta.1+1");
@@ -79,13 +80,13 @@ public void PatchOlderReleaseExample()
7980
fixture.Repository.MergeNoFF("hotfix-1.1.1", Constants.SignatureNow());
8081
fixture.AssertFullSemver("1.1.1+0");
8182
fixture.Repository.ApplyTag("1.1.1");
82-
fixture.AssertFullSemver("1.1.1+0");
83+
fixture.AssertFullSemver("1.1.1");
8384

8485
// Verify develop version
8586
fixture.Repository.Checkout("develop");
8687
fixture.AssertFullSemver("2.1.0-unstable.1+1");
8788
fixture.Repository.MergeNoFF("support-1.1", Constants.SignatureNow());
88-
fixture.AssertFullSemver("2.1.0-unstable.1+6");
89+
fixture.AssertFullSemver("2.1.0-unstable.1+7");
8990
}
9091
}
9192
}

GitVersionCore.Tests/IntegrationTests/MasterScenarios.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void GivenARepositoryWithTagAndANextVersionTxtFileAndNoCommits_VersionSho
7878
const string TaggedVersion = "1.0.3";
7979
fixture.Repository.MakeATaggedCommit(TaggedVersion);
8080

81-
fixture.AssertFullSemver("1.0.3+0");
81+
fixture.AssertFullSemver("1.0.3");
8282
}
8383
}
8484

@@ -103,7 +103,7 @@ public void GivenARepositoryWithTagAndNoNextVersionTxtFileAndNoCommits_VersionSh
103103
const string TaggedVersion = "1.0.3";
104104
fixture.Repository.MakeATaggedCommit(TaggedVersion);
105105

106-
fixture.AssertFullSemver("1.0.3+0");
106+
fixture.AssertFullSemver("1.0.3");
107107
}
108108
}
109109

@@ -130,7 +130,7 @@ public void GivenARepositoryWithTagAndOldNextVersionConfigAndNoCommits_VersionSh
130130
const string TaggedVersion = "1.1.0";
131131
fixture.Repository.MakeATaggedCommit(TaggedVersion);
132132

133-
fixture.AssertFullSemver("1.1.0+0");
133+
fixture.AssertFullSemver("1.1.0");
134134
}
135135
}
136136

GitVersionCore.Tests/IntegrationTests/SupportBranchScenarios.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ public void SupportIsCalculatedCorrectly()
2222
fixture.Repository.Checkout("master");
2323
fixture.Repository.MergeNoFF("release-2.0.0");
2424
fixture.Repository.ApplyTag("2.0.0");
25-
fixture.AssertFullSemver("2.0.0+0");
25+
fixture.AssertFullSemver("2.0.0");
2626

2727
// Now lets support 1.x release
2828
fixture.Repository.Checkout("1.1.0");
2929
fixture.Repository.CreateBranch("support/1.0.0").Checkout();
30-
fixture.AssertFullSemver("1.1.0+0");
30+
fixture.AssertFullSemver("1.1.0");
3131

3232
// Create release branch from support branch
3333
fixture.Repository.CreateBranch("release/1.2.0").Checkout();

GitVersionCore.Tests/IntegrationTests/WikiScenarios.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ public void MinorReleaseExample()
7272
fixture.Repository.MakeACommit();
7373
fixture.AssertFullSemver("1.3.0-beta.1+1");
7474

75-
// Apply beta.0 tag should be exact tag
76-
fixture.Repository. ApplyTag("1.3.0-beta.1");
77-
fixture.AssertFullSemver("1.3.0-beta.1+1");
75+
// Apply beta.1 tag should be exact tag
76+
fixture.Repository.ApplyTag("1.3.0-beta.1");
77+
fixture.AssertFullSemver("1.3.0-beta.1");
7878

7979
// Make a commit after a tag should bump up the beta
8080
fixture.Repository.MakeACommit();

GitVersionCore/GitVersionContext.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ public GitVersionContext(IRepository repository, Branch currentBranch, Config co
2626
throw new InvalidOperationException("Need a branch to operate on");
2727

2828
CurrentCommit = currentBranch.Tip;
29-
IsCurrentCommitTagged = repository.Tags.Any(t => t.PeeledTarget() == CurrentCommit);
30-
3129
if (currentBranch.IsDetachedHead())
3230
{
3331
CurrentBranch = CurrentCommit.GetBranchesContainingCommit(repository, OnlyEvaluateTrackedBranches).OnlyOrDefault() ?? currentBranch;
@@ -38,8 +36,20 @@ public GitVersionContext(IRepository repository, Branch currentBranch, Config co
3836
}
3937

4038
CalculateEffectiveConfiguration();
39+
40+
CurrentCommitTaggedVersion = repository.Tags
41+
.SelectMany(t =>
42+
{
43+
SemanticVersion version;
44+
if (t.PeeledTarget() == CurrentCommit && SemanticVersion.TryParse(t.Name, Configuration.GitTagPrefix, out version))
45+
return new[] { version };
46+
return new SemanticVersion[0];
47+
})
48+
.Max();
49+
IsCurrentCommitTagged = CurrentCommitTaggedVersion != null;
4150
}
4251

52+
public SemanticVersion CurrentCommitTaggedVersion { get; private set; }
4353
public bool OnlyEvaluateTrackedBranches { get; private set; }
4454
public EffectiveConfiguration Configuration { get; private set; }
4555
public IRepository Repository { get; private set; }

GitVersionCore/VersionCalculation/NextVersionCalculator.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,25 @@ public NextVersionCalculator(IBaseVersionCalculator baseVersionCalculator = null
2525

2626
public SemanticVersion FindVersion(GitVersionContext context)
2727
{
28+
// If current commit is tagged, don't do anything except add build metadata
29+
if (context.IsCurrentCommitTagged)
30+
{
31+
// Will always be 0, don't bother with the +0 on tags
32+
var semanticVersionBuildMetaData = metaDataCalculator.Create(context.CurrentCommit, context);
33+
semanticVersionBuildMetaData.CommitsSinceTag = null;
34+
var semanticVersion = new SemanticVersion(context.CurrentCommitTaggedVersion)
35+
{
36+
BuildMetaData = semanticVersionBuildMetaData
37+
};
38+
return semanticVersion;
39+
}
40+
2841
var baseVersion = baseVersionFinder.GetBaseVersion(context);
2942

3043
if (baseVersion.ShouldIncrement) IncrementVersion(context, baseVersion);
3144
else Logger.WriteInfo("Skipping version increment");
3245

33-
if (!context.IsCurrentCommitTagged && !baseVersion.SemanticVersion.PreReleaseTag.HasTag() && !string.IsNullOrEmpty(context.Configuration.Tag))
46+
if (!baseVersion.SemanticVersion.PreReleaseTag.HasTag() && !string.IsNullOrEmpty(context.Configuration.Tag))
3447
{
3548
UpdatePreReleaseTag(context, baseVersion);
3649
}
@@ -63,7 +76,6 @@ void UpdatePreReleaseTag(GitVersionContext context, BaseVersion baseVersion)
6376
var lastTag = highestTagBaseVersionStrategy.GetVersion(context);
6477
if (number == null &&
6578
lastTag != null &&
66-
!context.IsCurrentCommitTagged &&
6779
MajorMinorPatchEqual(lastTag.SemanticVersion, baseVersion.SemanticVersion) &&
6880
lastTag.SemanticVersion.PreReleaseTag.HasTag())
6981
{

GitVersionExe.Tests/MsBuildProjectArgTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void RunsMsBuildProvideViaCommandLineArg()
2626
var result = GitVersionHelper.ExecuteIn(fixture.RepositoryPath, projectFile: "RunsMsBuildProvideViaCommandLineArg.proj", projectArgs: "/target:OutputResults");
2727

2828
result.ExitCode.ShouldBe(0);
29-
result.Log.ShouldContain("FullSemVer: 1.2.3+0");
29+
result.Log.ShouldContain("FullSemVer: 1.2.3");
3030
}
3131
}
3232
}

0 commit comments

Comments
 (0)