Skip to content

Commit 4f5b42b

Browse files
author
Oren Novotny
committed
Add property to always expose commits since last version
1 parent 90b8744 commit 4f5b42b

File tree

28 files changed

+60
-6
lines changed

28 files changed

+60
-6
lines changed

src/GitVersionCore.Tests/Fixtures/RepositoryFixtureBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ string GetParticipant(string branch)
148148
return branch;
149149
}
150150

151-
VersionVariables GetVersion(IRepository repository = null, string commitId = null)
151+
public VersionVariables GetVersion(IRepository repository = null, string commitId = null)
152152
{
153153
var gitVersionContext = new GitVersionContext(repository ?? Repository, configuration, IsForTrackedBranchOnly, commitId);
154154
var executeGitVersion = ExecuteGitVersion(gitVersionContext);

src/GitVersionCore.Tests/IntegrationTests/DocumentationSamples.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using GitVersion;
22
using NUnit.Framework;
3+
using Shouldly;
34

45
[TestFixture]
56
public class DocumentationSamples
@@ -390,6 +391,10 @@ public void GitHubFlowMajorRelease()
390391
fixture.ApplyTag("2.0.0-beta.1");
391392
fixture.AssertFullSemver("2.0.0-beta.1");
392393

394+
// test that the CommitsSinceLastVersion should still return commit count
395+
var version = fixture.GetVersion();
396+
version.CommitsSinceLastVersion.ShouldBe("2");
397+
393398
// Make a commit after a tag should bump up the beta
394399
fixture.MakeACommit();
395400
fixture.AssertFullSemver("2.0.0-beta.2+3");

src/GitVersionCore.Tests/JsonVersionBuilderTests.Json.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
"Sha":"commitSha",
1919
"NuGetVersionV2":"1.2.3-unstable0004",
2020
"NuGetVersion":"1.2.3-unstable0004",
21+
"CommitsSinceLastVersion":5,
2122
"CommitDate":"2014-03-06"
2223
}

src/GitVersionCore.Tests/TestableVersionVariables.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class TestableVersionVariables : VersionVariables
66
{
7-
public TestableVersionVariables(string major = "", string minor = "", string patch = "", string buildMetaData = "", string buildMetaDataPadded = "", string fullBuildMetaData = "", string branchName = "", string sha = "", string majorMinorPatch = "", string semVer = "", string legacySemVer = "", string legacySemVerPadded = "", string fullSemVer = "", string assemblySemVer = "", string preReleaseTag = "", string preReleaseTagWithDash = "", string informationalVersion = "", string commitDate = "", string nugetVersion = "", string nugetVersionV2 = null) : base(major, minor, patch, buildMetaData, buildMetaDataPadded, fullBuildMetaData, branchName, sha, majorMinorPatch, semVer, legacySemVer, legacySemVerPadded, fullSemVer, assemblySemVer, preReleaseTag, preReleaseTagWithDash, informationalVersion, commitDate, nugetVersion, nugetVersionV2)
7+
public TestableVersionVariables(string major = "", string minor = "", string patch = "", string buildMetaData = "", string buildMetaDataPadded = "", string fullBuildMetaData = "", string branchName = "", string sha = "", string majorMinorPatch = "", string semVer = "", string legacySemVer = "", string legacySemVerPadded = "", string fullSemVer = "", string assemblySemVer = "", string preReleaseTag = "", string preReleaseTagWithDash = "", string informationalVersion = "", string commitDate = "", string nugetVersion = "", string nugetVersionV2 = "", string commitsSinceLastVersion = "") : base(major, minor, patch, buildMetaData, buildMetaDataPadded, fullBuildMetaData, branchName, sha, majorMinorPatch, semVer, legacySemVer, legacySemVerPadded, fullSemVer, assemblySemVer, preReleaseTag, preReleaseTagWithDash, informationalVersion, commitDate, nugetVersion, nugetVersionV2, commitsSinceLastVersion)
88
{
99
}
1010
}

src/GitVersionCore.Tests/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForPreRelease.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
"Sha":"commitSha",
1919
"NuGetVersionV2":"1.2.3-unstable0004",
2020
"NuGetVersion":"1.2.3-unstable0004",
21+
"CommitsSinceLastVersion":5,
2122
"CommitDate":"2014-03-06"
2223
}

src/GitVersionCore.Tests/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForPreReleaseWithPadding.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
"Sha":"commitSha",
1919
"NuGetVersionV2":"1.2.3-unstable00004",
2020
"NuGetVersion":"1.2.3-unstable00004",
21+
"CommitsSinceLastVersion":5,
2122
"CommitDate":"2014-03-06"
2223
}

src/GitVersionCore.Tests/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForStable.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
"Sha":"commitSha",
1919
"NuGetVersionV2":"1.2.3",
2020
"NuGetVersion":"1.2.3",
21+
"CommitsSinceLastVersion":5,
2122
"CommitDate":"2014-03-06"
2223
}

src/GitVersionCore.Tests/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForPreRelease.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
"Sha":"commitSha",
1919
"NuGetVersionV2":"1.2.3-unstable0005",
2020
"NuGetVersion":"1.2.3-unstable0005",
21+
"CommitsSinceLastVersion":5,
2122
"CommitDate":"2014-03-06"
2223
}

src/GitVersionCore.Tests/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStable.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
"Sha":"commitSha",
1919
"NuGetVersionV2":"1.2.3-ci0005",
2020
"NuGetVersion":"1.2.3-ci0005",
21+
"CommitsSinceLastVersion":5,
2122
"CommitDate":"2014-03-06"
2223
}

src/GitVersionCore.Tests/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommitIsTagged.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
"Sha":"commitSha",
1919
"NuGetVersionV2":"1.2.3",
2020
"NuGetVersion":"1.2.3",
21+
"CommitsSinceLastVersion":5,
2122
"CommitDate":"2014-03-06"
2223
}

src/GitVersionCore.Tests/VariableProviderTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommi
128128
BuildMetaData =
129129
{
130130
CommitsSinceTag = 5,
131+
CommitsSinceLastVersion = 5,
131132
Sha = "commitSha",
132133
CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
133134
}

src/GitVersionCore/OutputVariables/VariableProvider.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public static VersionVariables GetVariablesFor(SemanticVersion semanticVersion,
1717

1818
// For continuous deployment the commits since tag gets promoted to the pre-release number
1919
semanticVersion.PreReleaseTag.Number = semanticVersion.BuildMetaData.CommitsSinceTag;
20+
semanticVersion.BuildMetaData.CommitsSinceLastVersion = semanticVersion.BuildMetaData.CommitsSinceTag ?? 0;
2021
semanticVersion.BuildMetaData.CommitsSinceTag = null;
2122
}
2223

@@ -60,7 +61,8 @@ public static VersionVariables GetVariablesFor(SemanticVersion semanticVersion,
6061
informationalVersion,
6162
semverFormatValues.CommitDate,
6263
semverFormatValues.NuGetVersion,
63-
semverFormatValues.NuGetVersionV2);
64+
semverFormatValues.NuGetVersionV2,
65+
semverFormatValues.CommitsSinceLastVersion);
6466

6567
return variables;
6668
}

src/GitVersionCore/OutputVariables/VersionVariables.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
public class VersionVariables : IEnumerable<KeyValuePair<string, string>>
88
{
99
public VersionVariables(string major, string minor, string patch, string buildMetaData, string buildMetaDataPadded, string fullBuildMetaData, string branchName, string sha, string majorMinorPatch, string semVer, string legacySemVer, string legacySemVerPadded, string fullSemVer, string assemblySemVer, string preReleaseTag, string preReleaseTagWithDash, string informationalVersion,
10-
string commitDate, string nugetVersion, string nugetVersionV2)
10+
string commitDate, string nugetVersion, string nugetVersionV2, string commitsSinceLastVersion)
1111
{
1212
Major = major;
1313
Minor = minor;
@@ -29,6 +29,7 @@ public VersionVariables(string major, string minor, string patch, string buildMe
2929
CommitDate = commitDate;
3030
NuGetVersion = nugetVersion;
3131
NuGetVersionV2 = nugetVersionV2;
32+
CommitsSinceLastVersion = commitsSinceLastVersion;
3233
}
3334

3435
public string Major { get; private set; }
@@ -50,6 +51,7 @@ public VersionVariables(string major, string minor, string patch, string buildMe
5051
public string Sha { get; private set; }
5152
public string NuGetVersionV2 { get; private set; }
5253
public string NuGetVersion { get; private set; }
54+
public string CommitsSinceLastVersion { get; private set; }
5355

5456
public static IEnumerable<string> AvailableVariables
5557
{

src/GitVersionCore/SemanticVersionBuildMetaData.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class SemanticVersionBuildMetaData : IFormattable, IEquatable<SemanticVer
1717
public string Sha;
1818
public string OtherMetaData;
1919
public DateTimeOffset CommitDate;
20+
public int CommitsSinceLastVersion;
2021

2122
public SemanticVersionBuildMetaData()
2223
{
@@ -29,6 +30,7 @@ public SemanticVersionBuildMetaData(int? commitsSinceTag, string branch, string
2930
Branch = branch;
3031
CommitDate = commitDate;
3132
OtherMetaData = otherMetadata;
33+
CommitsSinceLastVersion = commitsSinceTag ?? 0;
3234
}
3335

3436
public SemanticVersionBuildMetaData(SemanticVersionBuildMetaData buildMetaData)
@@ -146,7 +148,10 @@ public static SemanticVersionBuildMetaData Parse(string buildMetaData)
146148
var parsed = ParseRegex.Match(buildMetaData);
147149

148150
if (parsed.Groups["BuildNumber"].Success)
151+
{
149152
semanticVersionBuildMetaData.CommitsSinceTag = int.Parse(parsed.Groups["BuildNumber"].Value);
153+
semanticVersionBuildMetaData.CommitsSinceLastVersion = semanticVersionBuildMetaData.CommitsSinceTag ?? 0;
154+
}
150155

151156
if (parsed.Groups["BranchName"].Success)
152157
semanticVersionBuildMetaData.Branch = parsed.Groups["BranchName"].Value;

src/GitVersionCore/SemanticVersionFormatValues.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
namespace GitVersion
22
{
3+
using System.Globalization;
4+
35
public class SemanticVersionFormatValues
46
{
57
readonly SemanticVersion _semver;
@@ -112,5 +114,10 @@ public string DefaultInformationalVersion
112114
{
113115
get { return _semver.ToString("i"); }
114116
}
117+
118+
public string CommitsSinceLastVersion
119+
{
120+
get { return _semver.BuildMetaData.CommitsSinceLastVersion.ToString(CultureInfo.InvariantCulture); }
121+
}
115122
}
116123
}

src/GitVersionCore/VersionCalculation/NextVersionCalculator.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,22 @@ public NextVersionCalculator(IBaseVersionCalculator baseVersionCalculator = null
2323

2424
public SemanticVersion FindVersion(GitVersionContext context)
2525
{
26+
27+
SemanticVersion taggedSemanticVersion = null;
2628
// If current commit is tagged, don't do anything except add build metadata
2729
if (context.IsCurrentCommitTagged)
2830
{
2931
// Will always be 0, don't bother with the +0 on tags
3032
var semanticVersionBuildMetaData = metaDataCalculator.Create(context.CurrentCommit, context);
3133
semanticVersionBuildMetaData.CommitsSinceTag = null;
34+
35+
36+
3237
var semanticVersion = new SemanticVersion(context.CurrentCommitTaggedVersion)
3338
{
3439
BuildMetaData = semanticVersionBuildMetaData
3540
};
36-
return semanticVersion;
41+
taggedSemanticVersion = semanticVersion;
3742
}
3843

3944
var baseVersion = baseVersionFinder.GetBaseVersion(context);
@@ -52,7 +57,13 @@ public SemanticVersion FindVersion(GitVersionContext context)
5257

5358
semver.BuildMetaData = metaDataCalculator.Create(baseVersion.BaseVersionSource, context);
5459

55-
return semver;
60+
if (taggedSemanticVersion != null)
61+
{
62+
// set the commit count on the tagged ver
63+
taggedSemanticVersion.BuildMetaData.CommitsSinceLastVersion = semver.BuildMetaData.CommitsSinceLastVersion;
64+
}
65+
66+
return taggedSemanticVersion ?? semver;
5667
}
5768

5869
void UpdatePreReleaseTag(GitVersionContext context, SemanticVersion semanticVersion, string branchNameOverride)

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_Major.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinor.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinorPatch.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinorPatchTag.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinorPatchTag_NugetAssemblyInfo.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinorPatch_NugetAssemblyInfo.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinor_NugetAssemblyInfo.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinor_NugetAssemblyInfoWithMultipleVariables.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_Major_NugetAssemblyInfo.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "2.3.4-beta0005";
4242
public static string NuGetVersion = "2.3.4-beta0005";
43+
public static string CommitsSinceLastVersion = "6";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyCreatedCode.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Fake
4040
public static string Sha = "commitSha";
4141
public static string NuGetVersionV2 = "1.2.3-unstable0004";
4242
public static string NuGetVersion = "1.2.3-unstable0004";
43+
public static string CommitsSinceLastVersion = "5";
4344
public static string CommitDate = "2014-03-06";
4445
}
4546

src/GitVersionTask/GetVersion.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ public class GetVersion : Task
7474
[Output]
7575
public string CommitDate { get; set; }
7676

77+
[Output]
78+
public string CommitsSinceLastVersion { get; set; }
79+
7780
TaskLogger logger;
7881
IFileSystem fileSystem;
7982

src/GitVersionTask/NugetAssets/GitVersionTask.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
<Output TaskParameter="PreReleaseTagWithDash" PropertyName="GitVersion_PreReleaseTagWithDash" />
6060
<Output TaskParameter="InformationalVersion" PropertyName="GitVersion_InformationalVersion" />
6161
<Output TaskParameter="CommitDate" PropertyName="GitVersion_CommitDate" />
62+
<Output TaskParameter="CommitsSinceLastVersion" PropertyName="GitVersion_CommitsSinceLastVersion" />
6263
</GetVersion>
6364

6465
</Target>

0 commit comments

Comments
 (0)