Skip to content

Add property to always expose commits since last version #701

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Oct 30, 2015
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docs/more-info/variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ For the `release/3.0.0` branch of GitVersion it shows:
"BranchName":"release/3.0.0",
"Sha":"28c853159a46b5a87e6cc9c4f6e940c59d6bc68a",
"NuGetVersionV2":"3.0.0-beta0001",
"NuGetVersion":"3.0.0-beta0001"
"NuGetVersion":"3.0.0-beta0001",
"CommitsSinceLastVersion":1,
"CommitsSinceLastVersionPadded":"0001",
"CommitDate":"2014-03-06"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this the date of the head commit or the source version commit?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, this isn't new. Hrrmm

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it wasn't new, just fixing it in the docs

}
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ minor-version-bump-message: '\+semver:\s?(feature|minor)'
patch-version-bump-message: '\+semver:\s?(fix|patch)'
legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-lastversion-padding: 4
commit-message-incrementing: Enabled
branches:
master:
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersionCore.Tests/Fixtures/RepositoryFixtureBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ string GetParticipant(string branch)
return branch;
}

VersionVariables GetVersion(IRepository repository = null, string commitId = null)
public VersionVariables GetVersion(IRepository repository = null, string commitId = null)
{
var gitVersionContext = new GitVersionContext(repository ?? Repository, configuration, IsForTrackedBranchOnly, commitId);
var executeGitVersion = ExecuteGitVersion(gitVersionContext);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using GitVersion;
using NUnit.Framework;
using Shouldly;

[TestFixture]
public class DocumentationSamples
Expand Down Expand Up @@ -390,6 +391,10 @@ public void GitHubFlowMajorRelease()
fixture.ApplyTag("2.0.0-beta.1");
fixture.AssertFullSemver("2.0.0-beta.1");

// test that the CommitsSinceLastVersion should still return commit count
var version = fixture.GetVersion();
version.CommitsSinceLastVersion.ShouldBe("2");

// Make a commit after a tag should bump up the beta
fixture.MakeACommit();
fixture.AssertFullSemver("2.0.0-beta.2+3");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@
"Sha":"commitSha",
"NuGetVersionV2":"1.2.3-unstable0004",
"NuGetVersion":"1.2.3-unstable0004",
"CommitsSinceLastVersion":5,
"CommitsSinceLastVersionPadded":"0005",
"CommitDate":"2014-03-06"
}
5 changes: 3 additions & 2 deletions src/GitVersionCore.Tests/TestEffectiveConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,13 @@ public TestEffectiveConfiguration(
string patchMessage = null,
CommitMessageIncrementMode commitMessageMode = CommitMessageIncrementMode.Enabled,
int legacySemVerPadding = 4,
int buildMetaDataPadding = 4) :
int buildMetaDataPadding = 4,
int commitsSinceLastVersionPadding = 4) :
base(assemblyVersioningScheme, assemblyInformationalFormat, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch,
branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
trackMergeTarget,
majorMessage, minorMessage, patchMessage,
commitMessageMode, legacySemVerPadding, buildMetaDataPadding)
commitMessageMode, legacySemVerPadding, buildMetaDataPadding, commitsSinceLastVersionPadding)
{
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersionCore.Tests/TestableVersionVariables.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

class TestableVersionVariables : VersionVariables
{
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)
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 = "", string commitsSinceLastVersionPadded = "") : base(major, minor, patch, buildMetaData, buildMetaDataPadded, fullBuildMetaData, branchName, sha, majorMinorPatch, semVer, legacySemVer, legacySemVerPadded, fullSemVer, assemblySemVer, preReleaseTag, preReleaseTagWithDash, informationalVersion, commitDate, nugetVersion, nugetVersionV2, commitsSinceLastVersion, commitsSinceLastVersionPadded)
{
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@
"Sha":"commitSha",
"NuGetVersionV2":"1.2.3-unstable0004",
"NuGetVersion":"1.2.3-unstable0004",
"CommitsSinceLastVersion":5,
"CommitsSinceLastVersionPadded":"0005",
"CommitDate":"2014-03-06"
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@
"Sha":"commitSha",
"NuGetVersionV2":"1.2.3-unstable00004",
"NuGetVersion":"1.2.3-unstable00004",
"CommitsSinceLastVersion":5,
"CommitsSinceLastVersionPadded":"0005",
"CommitDate":"2014-03-06"
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@
"Sha":"commitSha",
"NuGetVersionV2":"1.2.3",
"NuGetVersion":"1.2.3",
"CommitsSinceLastVersion":5,
"CommitsSinceLastVersionPadded":"0005",
"CommitDate":"2014-03-06"
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@
"Sha":"commitSha",
"NuGetVersionV2":"1.2.3-unstable0005",
"NuGetVersion":"1.2.3-unstable0005",
"CommitsSinceLastVersion":5,
"CommitsSinceLastVersionPadded":"0005",
"CommitDate":"2014-03-06"
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@
"Sha":"commitSha",
"NuGetVersionV2":"1.2.3-ci0005",
"NuGetVersion":"1.2.3-ci0005",
"CommitsSinceLastVersion":5,
"CommitsSinceLastVersionPadded":"0005",
"CommitDate":"2014-03-06"
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@
"Sha":"commitSha",
"NuGetVersionV2":"1.2.3",
"NuGetVersion":"1.2.3",
"CommitsSinceLastVersion":5,
"CommitsSinceLastVersionPadded":"0005",
"CommitDate":"2014-03-06"
}
1 change: 1 addition & 0 deletions src/GitVersionCore.Tests/VariableProviderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommi
BuildMetaData =
{
CommitsSinceTag = 5,
CommitsSinceLastVersion = 5,
Sha = "commitSha",
CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
}
Expand Down
3 changes: 3 additions & 0 deletions src/GitVersionCore/Configuration/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ public class Config
[YamlMember(Alias = "build-metadata-padding")]
public int? BuildMetaDataPadding { get; set; }

[YamlMember(Alias = "commits-since-lastversion-padding")]
public int? CommitsSinceLastVersionPadding { get; set; }

[YamlMember(Alias = "commit-message-incrementing")]
public CommitMessageIncrementMode? CommitMessageIncrementing { get; set; }

Expand Down
1 change: 1 addition & 0 deletions src/GitVersionCore/Configuration/ConfigurationProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public static void ApplyDefaultsTo(Config config)
config.CommitMessageIncrementing = config.CommitMessageIncrementing ?? CommitMessageIncrementMode.Enabled;
config.LegacySemVerPadding = config.LegacySemVerPadding ?? 4;
config.BuildMetaDataPadding = config.BuildMetaDataPadding ?? 4;
config.CommitsSinceLastVersionPadding = config.CommitsSinceLastVersionPadding ?? 4;

var configBranches = config.Branches.ToList();

Expand Down
6 changes: 5 additions & 1 deletion src/GitVersionCore/EffectiveConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ public EffectiveConfiguration(
string patchVersionBumpMessage,
CommitMessageIncrementMode commitMessageIncrementing,
int legacySemVerPaddding,
int buildMetaDataPadding
int buildMetaDataPadding,
int commitsSinceLastVersionPadding
)
{
AssemblyVersioningScheme = assemblyVersioningScheme;
Expand All @@ -41,6 +42,7 @@ int buildMetaDataPadding
CommitMessageIncrementing = commitMessageIncrementing;
LegacySemVerPadding = legacySemVerPaddding;
BuildMetaDataPadding = buildMetaDataPadding;
CommitsSinceLastVersionPadding = commitsSinceLastVersionPadding;
}

public VersioningMode VersioningMode { get; private set; }
Expand Down Expand Up @@ -81,6 +83,8 @@ int buildMetaDataPadding
public int LegacySemVerPadding { get; private set; }
public int BuildMetaDataPadding { get; private set; }

public int CommitsSinceLastVersionPadding { get; private set; }

public CommitMessageIncrementMode CommitMessageIncrementing { get; private set; }
}
}
3 changes: 2 additions & 1 deletion src/GitVersionCore/GitVersionContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,8 @@ void CalculateEffectiveConfiguration()
majorMessage, minorMessage, patchMessage,
commitMessageVersionBump,
configuration.LegacySemVerPadding.Value,
configuration.BuildMetaDataPadding.Value);
configuration.BuildMetaDataPadding.Value,
configuration.CommitsSinceLastVersionPadding.Value);
}
}
}
5 changes: 4 additions & 1 deletion src/GitVersionCore/OutputVariables/VariableProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public static VersionVariables GetVariablesFor(SemanticVersion semanticVersion,

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

Expand Down Expand Up @@ -60,7 +61,9 @@ public static VersionVariables GetVariablesFor(SemanticVersion semanticVersion,
informationalVersion,
semverFormatValues.CommitDate,
semverFormatValues.NuGetVersion,
semverFormatValues.NuGetVersionV2);
semverFormatValues.NuGetVersionV2,
semverFormatValues.CommitsSinceLastVersion,
semverFormatValues.CommitsSinceLastVersionPadded);

return variables;
}
Expand Down
6 changes: 5 additions & 1 deletion src/GitVersionCore/OutputVariables/VersionVariables.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
public class VersionVariables : IEnumerable<KeyValuePair<string, string>>
{
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,
string commitDate, string nugetVersion, string nugetVersionV2)
string commitDate, string nugetVersion, string nugetVersionV2, string commitsSinceLastVersion, string commitsSinceLastVersionPadded)
{
Major = major;
Minor = minor;
Expand All @@ -29,6 +29,8 @@ public VersionVariables(string major, string minor, string patch, string buildMe
CommitDate = commitDate;
NuGetVersion = nugetVersion;
NuGetVersionV2 = nugetVersionV2;
CommitsSinceLastVersion = commitsSinceLastVersion;
CommitsSinceLastVersionPadded = commitsSinceLastVersionPadded;
}

public string Major { get; private set; }
Expand All @@ -50,6 +52,8 @@ public VersionVariables(string major, string minor, string patch, string buildMe
public string Sha { get; private set; }
public string NuGetVersionV2 { get; private set; }
public string NuGetVersion { get; private set; }
public string CommitsSinceLastVersion { get; private set; }
public string CommitsSinceLastVersionPadded { get; private set; }

public static IEnumerable<string> AvailableVariables
{
Expand Down
5 changes: 5 additions & 0 deletions src/GitVersionCore/SemanticVersionBuildMetaData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class SemanticVersionBuildMetaData : IFormattable, IEquatable<SemanticVer
public string Sha;
public string OtherMetaData;
public DateTimeOffset CommitDate;
public int CommitsSinceLastVersion;

public SemanticVersionBuildMetaData()
{
Expand All @@ -29,6 +30,7 @@ public SemanticVersionBuildMetaData(int? commitsSinceTag, string branch, string
Branch = branch;
CommitDate = commitDate;
OtherMetaData = otherMetadata;
CommitsSinceLastVersion = commitsSinceTag ?? 0;
}

public SemanticVersionBuildMetaData(SemanticVersionBuildMetaData buildMetaData)
Expand Down Expand Up @@ -146,7 +148,10 @@ public static SemanticVersionBuildMetaData Parse(string buildMetaData)
var parsed = ParseRegex.Match(buildMetaData);

if (parsed.Groups["BuildNumber"].Success)
{
semanticVersionBuildMetaData.CommitsSinceTag = int.Parse(parsed.Groups["BuildNumber"].Value);
semanticVersionBuildMetaData.CommitsSinceLastVersion = semanticVersionBuildMetaData.CommitsSinceTag ?? 0;
}

if (parsed.Groups["BranchName"].Success)
semanticVersionBuildMetaData.Branch = parsed.Groups["BranchName"].Value;
Expand Down
14 changes: 13 additions & 1 deletion src/GitVersionCore/SemanticVersionFormatValues.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
namespace GitVersion
{
using System.Globalization;

public class SemanticVersionFormatValues
{
readonly SemanticVersion _semver;
Expand Down Expand Up @@ -112,5 +114,15 @@ public string DefaultInformationalVersion
{
get { return _semver.ToString("i"); }
}
}

public string CommitsSinceLastVersion
{
get { return _semver.BuildMetaData.CommitsSinceLastVersion.ToString(CultureInfo.InvariantCulture); }
}

public string CommitsSinceLastVersionPadded
{
get { return _semver.BuildMetaData.CommitsSinceLastVersion.ToString(CultureInfo.InvariantCulture).PadLeft(_config.CommitsSinceLastVersionPadding, '0'); }
}
}
}
15 changes: 13 additions & 2 deletions src/GitVersionCore/VersionCalculation/NextVersionCalculator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,22 @@ public NextVersionCalculator(IBaseVersionCalculator baseVersionCalculator = null

public SemanticVersion FindVersion(GitVersionContext context)
{

SemanticVersion taggedSemanticVersion = null;
// If current commit is tagged, don't do anything except add build metadata
if (context.IsCurrentCommitTagged)
{
// Will always be 0, don't bother with the +0 on tags
var semanticVersionBuildMetaData = metaDataCalculator.Create(context.CurrentCommit, context);
semanticVersionBuildMetaData.CommitsSinceTag = null;



var semanticVersion = new SemanticVersion(context.CurrentCommitTaggedVersion)
{
BuildMetaData = semanticVersionBuildMetaData
};
return semanticVersion;
taggedSemanticVersion = semanticVersion;
}

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

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

return semver;
if (taggedSemanticVersion != null)
{
// set the commit count on the tagged ver
taggedSemanticVersion.BuildMetaData.CommitsSinceLastVersion = semver.BuildMetaData.CommitsSinceLastVersion;
}

return taggedSemanticVersion ?? semver;
}

void UpdatePreReleaseTag(GitVersionContext context, SemanticVersion semanticVersion, string branchNameOverride)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ namespace Fake
public static string Sha = "commitSha";
public static string NuGetVersionV2 = "2.3.4-beta0005";
public static string NuGetVersion = "2.3.4-beta0005";
public static string CommitsSinceLastVersion = "6";
public static string CommitsSinceLastVersionPadded = "0006";
public static string CommitDate = "2014-03-06";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ namespace Fake
public static string Sha = "commitSha";
public static string NuGetVersionV2 = "2.3.4-beta0005";
public static string NuGetVersion = "2.3.4-beta0005";
public static string CommitsSinceLastVersion = "6";
public static string CommitsSinceLastVersionPadded = "0006";
public static string CommitDate = "2014-03-06";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ namespace Fake
public static string Sha = "commitSha";
public static string NuGetVersionV2 = "2.3.4-beta0005";
public static string NuGetVersion = "2.3.4-beta0005";
public static string CommitsSinceLastVersion = "6";
public static string CommitsSinceLastVersionPadded = "0006";
public static string CommitDate = "2014-03-06";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ namespace Fake
public static string Sha = "commitSha";
public static string NuGetVersionV2 = "2.3.4-beta0005";
public static string NuGetVersion = "2.3.4-beta0005";
public static string CommitsSinceLastVersion = "6";
public static string CommitsSinceLastVersionPadded = "0006";
public static string CommitDate = "2014-03-06";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ namespace Fake
public static string Sha = "commitSha";
public static string NuGetVersionV2 = "2.3.4-beta0005";
public static string NuGetVersion = "2.3.4-beta0005";
public static string CommitsSinceLastVersion = "6";
public static string CommitsSinceLastVersionPadded = "0006";
public static string CommitDate = "2014-03-06";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ namespace Fake
public static string Sha = "commitSha";
public static string NuGetVersionV2 = "2.3.4-beta0005";
public static string NuGetVersion = "2.3.4-beta0005";
public static string CommitsSinceLastVersion = "6";
public static string CommitsSinceLastVersionPadded = "0006";
public static string CommitDate = "2014-03-06";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ namespace Fake
public static string Sha = "commitSha";
public static string NuGetVersionV2 = "2.3.4-beta0005";
public static string NuGetVersion = "2.3.4-beta0005";
public static string CommitsSinceLastVersion = "6";
public static string CommitsSinceLastVersionPadded = "0006";
public static string CommitDate = "2014-03-06";
}

Expand Down
Loading