Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
2 changes: 2 additions & 0 deletions docs/input/docs/reference/variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ what is available. For the `release/3.0.0` branch of GitVersion it shows:
"EscapedBranchName": "release-3.022.011",
"Sha": "28c853159a46b5a87e6cc9c4f6e940c59d6bc68a",
"ShortSha": "28c8531",
"VersionSourceSemVer": "3.22.11",
"VersionSourceSha": "28c853159a46b5a87e6cc9c4f6e940c59d6bc68a",
"CommitsSinceVersionSource": 7,
"VersionSourceDistance": 7,
Expand Down Expand Up @@ -65,6 +66,7 @@ Each property of the above JSON document is described in the below table.
| `EscapedBranchName` | Equal to `BranchName`, but with `/` replaced with `-`. |
| `Sha` | The SHA of the Git commit. |
| `ShortSha` | The `Sha` limited to 7 characters. |
| `VersionSourceSemVer` | The semantic version of the commit used as version source. |
| `VersionSourceSha` | The SHA of the commit used as version source. |
| `CommitsSinceVersionSource` | (Deprecated: use `VersionSourceDistance` instead) The number of commits since the version source. |
| `VersionSourceDistance` | The number of commits since the version source. |
Expand Down
1 change: 1 addition & 0 deletions src/GitVersion.Core.Tests/CommitDateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public void CommitDateFormatTest(string format, string expectedOutcome)
{
var date = new DateTime(2017, 10, 6);
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(
new SemanticVersion(1, 2, 2),
"950d2f830f5a2af12a6779a48d20dcbb02351f25",
0,
MainBranch,
Expand Down
3 changes: 3 additions & 0 deletions src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,7 @@ public void CalculateVersionFromWorktreeHead()

// Verify
version.SemVer.ShouldBe("1.0.0");
version.VersionSourceSemVer.ShouldBe("1.0.0");
var commits = worktreeFixture.Repository.Head.Commits;
version.Sha.ShouldBe(commits.First().Sha);
}
Expand Down Expand Up @@ -483,6 +484,7 @@ public void CalculateVersionVariables_TwoBranchHasSameCommitHeadDetachedAndTagge

// Verify
version.SemVer.ShouldBe("1.0.1");
version.VersionSourceSemVer.ShouldBe("1.0.1");
var commits = worktreeFixture.Repository.Head.Commits;
version.Sha.ShouldBe(commits.First().Sha);
}
Expand Down Expand Up @@ -578,6 +580,7 @@ public void CalculateVersionVariables_WithLimitedCloneDepth_AndAllowShallowTrue_
// Verify that the correct commit is used
version.Sha.ShouldBe(latestCommit.Sha);
version.MajorMinorPatch.ShouldBe("2.0.0");
version.VersionSourceSemVer.ShouldBe("1.0.0");

// Verify repository is still recognized as shallow
var repository = this.sp.GetRequiredService<IGitRepository>();
Expand Down
54 changes: 28 additions & 26 deletions src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,31 @@

namespace GitVersion.Core.Tests.Helpers;

internal record TestableGitVersionVariables() : GitVersionVariables("",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"");
internal record TestableGitVersionVariables() : GitVersionVariables(
Major: "",
Minor: "",
Patch: "",
BuildMetaData: "",
FullBuildMetaData: "",
BranchName: "",
EscapedBranchName: "",
Sha: "",
ShortSha: "",
MajorMinorPatch: "",
SemVer: "",
FullSemVer: "",
AssemblySemVer: "",
AssemblySemFileVer: "",
PreReleaseTag: "",
PreReleaseTagWithDash: "",
PreReleaseLabel: "",
PreReleaseLabelWithDash: "",
PreReleaseNumber: "",
WeightedPreReleaseNumber: "",
InformationalVersion: "",
CommitDate: "",
VersionSourceSemVer: "",
VersionSourceSha: "",
CommitsSinceVersionSource: "",
VersionSourceDistance: "",
UncommittedChanges: "");
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "1.1.2",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 4
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 4
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 55009
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 8
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 5
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@ public class JsonVersionBuilderTests : TestBase
[Test]
public void Json()
{
var versionSourceSemVer = new SemanticVersion(1, 1, 2);
var semanticVersion = new SemanticVersion
{
Major = 1,
Minor = 2,
Patch = 0,
PreReleaseTag = "unstable4",
BuildMetaData = new("versionSourceSha", 5, "feature1", "commitSha", "commitShortSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z"), 0)
BuildMetaData = new(versionSourceSemVer, "versionSourceSha", 5, "feature1", "commitSha", "commitShortSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z"), 0)
};

var serviceProvider = ConfigureServices();
Expand Down
3 changes: 3 additions & 0 deletions src/GitVersion.Core/OutputVariables/GitVersionVariables.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public record GitVersionVariables(string Major,
string WeightedPreReleaseNumber,
string? InformationalVersion,
string? CommitDate,
string? VersionSourceSemVer,
string? VersionSourceSha,
[property: Obsolete("CommitsSinceVersionSource has been deprecated. Use VersionSourceDistance instead.")]
string? CommitsSinceVersionSource,
Expand Down Expand Up @@ -52,6 +53,7 @@ public record GitVersionVariables(string Major,
nameof(WeightedPreReleaseNumber),
nameof(InformationalVersion),
nameof(CommitDate),
nameof(VersionSourceSemVer),
nameof(VersionSourceSha),
nameof(CommitsSinceVersionSource),
nameof(VersionSourceDistance),
Expand Down Expand Up @@ -82,6 +84,7 @@ public record GitVersionVariables(string Major,
{ nameof(WeightedPreReleaseNumber), WeightedPreReleaseNumber },
{ nameof(InformationalVersion), InformationalVersion },
{ nameof(CommitDate), CommitDate },
{ nameof(VersionSourceSemVer), VersionSourceSemVer },
{ nameof(VersionSourceSha), VersionSourceSha },
{ nameof(CommitsSinceVersionSource), CommitsSinceVersionSource },
{ nameof(VersionSourceDistance), VersionSourceDistance },
Expand Down
2 changes: 0 additions & 2 deletions src/GitVersion.Core/PublicAPI.Shipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,6 @@ GitVersion.SemanticVersionBuildMetaData.OtherMetaData.get -> string?
GitVersion.SemanticVersionBuildMetaData.OtherMetaData.init -> void
GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData() -> void
GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData(GitVersion.SemanticVersionBuildMetaData! buildMetaData) -> void
GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData(string? versionSourceSha, long? commitsSinceTag, string? branch, string? commitSha, string? commitShortSha, System.DateTimeOffset? commitDate, long numberOfUnCommittedChanges, string? otherMetadata = null) -> void
GitVersion.SemanticVersionBuildMetaData.Sha.get -> string?
GitVersion.SemanticVersionBuildMetaData.Sha.init -> void
GitVersion.SemanticVersionBuildMetaData.ShortSha.get -> string?
Expand Down Expand Up @@ -726,7 +725,6 @@ GitVersion.VersionCalculation.IBaseVersionIncrement
GitVersion.VersionCalculation.IBaseVersionIncrement.BaseVersionSource.get -> GitVersion.Git.ICommit?
GitVersion.VersionCalculation.IBaseVersionIncrement.Source.get -> string!
GitVersion.VersionCalculation.IDeploymentModeCalculator
GitVersion.VersionCalculation.IDeploymentModeCalculator.Calculate(GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource) -> GitVersion.SemanticVersion!
GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder
GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder.GetConfigurations(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> System.Collections.Generic.IEnumerable<GitVersion.Configuration.EffectiveBranchConfiguration!>!
GitVersion.VersionCalculation.IIncrementStrategyFinder
Expand Down
11 changes: 9 additions & 2 deletions src/GitVersion.Core/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
#nullable enable
GitVersion.OutputVariables.GitVersionVariables.Deconstruct(out string! Major, out string! Minor, out string! Patch, out string? BuildMetaData, out string? FullBuildMetaData, out string? BranchName, out string? EscapedBranchName, out string? Sha, out string? ShortSha, out string! MajorMinorPatch, out string! SemVer, out string! FullSemVer, out string? AssemblySemVer, out string? AssemblySemFileVer, out string? PreReleaseTag, out string? PreReleaseTagWithDash, out string? PreReleaseLabel, out string? PreReleaseLabelWithDash, out string? PreReleaseNumber, out string! WeightedPreReleaseNumber, out string? InformationalVersion, out string? CommitDate, out string? VersionSourceSha, out string? CommitsSinceVersionSource, out string? VersionSourceDistance, out string? UncommittedChanges) -> void
GitVersion.OutputVariables.GitVersionVariables.GitVersionVariables(string! Major, string! Minor, string! Patch, string? BuildMetaData, string? FullBuildMetaData, string? BranchName, string? EscapedBranchName, string? Sha, string? ShortSha, string! MajorMinorPatch, string! SemVer, string! FullSemVer, string? AssemblySemVer, string? AssemblySemFileVer, string? PreReleaseTag, string? PreReleaseTagWithDash, string? PreReleaseLabel, string? PreReleaseLabelWithDash, string? PreReleaseNumber, string! WeightedPreReleaseNumber, string? InformationalVersion, string? CommitDate, string? VersionSourceSha, string? CommitsSinceVersionSource, string? VersionSourceDistance, string? UncommittedChanges) -> void
GitVersion.OutputVariables.GitVersionVariables.Deconstruct(out string! Major, out string! Minor, out string! Patch, out string? BuildMetaData, out string? FullBuildMetaData, out string? BranchName, out string? EscapedBranchName, out string? Sha, out string? ShortSha, out string! MajorMinorPatch, out string! SemVer, out string! FullSemVer, out string? AssemblySemVer, out string? AssemblySemFileVer, out string? PreReleaseTag, out string? PreReleaseTagWithDash, out string? PreReleaseLabel, out string? PreReleaseLabelWithDash, out string? PreReleaseNumber, out string! WeightedPreReleaseNumber, out string? InformationalVersion, out string? CommitDate, out string? VersionSourceSemVer, out string? VersionSourceSha, out string? CommitsSinceVersionSource, out string? VersionSourceDistance, out string? UncommittedChanges) -> void
GitVersion.OutputVariables.GitVersionVariables.GitVersionVariables(string! Major, string! Minor, string! Patch, string? BuildMetaData, string? FullBuildMetaData, string? BranchName, string? EscapedBranchName, string? Sha, string? ShortSha, string! MajorMinorPatch, string! SemVer, string! FullSemVer, string? AssemblySemVer, string? AssemblySemFileVer, string? PreReleaseTag, string? PreReleaseTagWithDash, string? PreReleaseLabel, string? PreReleaseLabelWithDash, string? PreReleaseNumber, string! WeightedPreReleaseNumber, string? InformationalVersion, string? CommitDate, string? VersionSourceSemVer, string? VersionSourceSha, string? CommitsSinceVersionSource, string? VersionSourceDistance, string? UncommittedChanges) -> void
GitVersion.OutputVariables.GitVersionVariables.VersionSourceDistance.get -> string?
GitVersion.OutputVariables.GitVersionVariables.VersionSourceDistance.init -> void
GitVersion.OutputVariables.GitVersionVariables.VersionSourceSemVer.get -> string?
GitVersion.OutputVariables.GitVersionVariables.VersionSourceSemVer.init -> void
GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData(GitVersion.SemanticVersion? versionSourceSemVer, string? versionSourceSha, long? commitsSinceTag, string? branch, string? commitSha, string? commitShortSha, System.DateTimeOffset? commitDate, long numberOfUnCommittedChanges, string? otherMetadata = null) -> void
GitVersion.SemanticVersionBuildMetaData.VersionSourceDistance.get -> long
GitVersion.SemanticVersionBuildMetaData.VersionSourceDistance.init -> void
GitVersion.SemanticVersionBuildMetaData.VersionSourceSemVer.get -> GitVersion.SemanticVersion?
GitVersion.SemanticVersionBuildMetaData.VersionSourceSemVer.init -> void
GitVersion.SemanticVersionFormatValues.VersionSourceDistance.get -> string!
GitVersion.SemanticVersionFormatValues.VersionSourceSemVer.get -> string?
GitVersion.VersionCalculation.IDeploymentModeCalculator.Calculate(GitVersion.SemanticVersion! semanticVersion, GitVersion.VersionCalculation.IBaseVersion! baseVersion) -> GitVersion.SemanticVersion!
8 changes: 6 additions & 2 deletions src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public class SemanticVersionBuildMetaData : IFormattable, IEquatable<SemanticVer

public DateTimeOffset? CommitDate { get; init; }

public SemanticVersion? VersionSourceSemVer { get; init; }

public string? VersionSourceSha { get; init; }

public long CommitsSinceVersionSource => VersionSourceDistance;
Expand All @@ -36,15 +38,16 @@ public SemanticVersionBuildMetaData()
{
}

public SemanticVersionBuildMetaData(string? versionSourceSha, long? commitsSinceTag, string? branch, string? commitSha,
string? commitShortSha, DateTimeOffset? commitDate, long numberOfUnCommittedChanges, string? otherMetadata = null)
public SemanticVersionBuildMetaData(SemanticVersion? versionSourceSemVer, string? versionSourceSha, long? commitsSinceTag, string? branch,
string? commitSha, string? commitShortSha, DateTimeOffset? commitDate, long numberOfUnCommittedChanges, string? otherMetadata = null)
{
this.Sha = commitSha;
this.ShortSha = commitShortSha;
this.CommitsSinceTag = commitsSinceTag;
this.Branch = branch;
this.CommitDate = commitDate;
this.OtherMetaData = otherMetadata;
this.VersionSourceSemVer = versionSourceSemVer;
this.VersionSourceSha = versionSourceSha;
this.VersionSourceDistance = commitsSinceTag ?? 0;
this.UncommittedChanges = numberOfUnCommittedChanges;
Expand All @@ -60,6 +63,7 @@ public SemanticVersionBuildMetaData(SemanticVersionBuildMetaData buildMetaData)
this.Branch = buildMetaData.Branch;
this.CommitDate = buildMetaData.CommitDate;
this.OtherMetaData = buildMetaData.OtherMetaData;
this.VersionSourceSemVer = buildMetaData.VersionSourceSemVer;
this.VersionSourceSha = buildMetaData.VersionSourceSha;
this.VersionSourceDistance = buildMetaData.VersionSourceDistance;
this.UncommittedChanges = buildMetaData.UncommittedChanges;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using GitVersion.Git;

namespace GitVersion.VersionCalculation;

public interface IDeploymentModeCalculator
{
SemanticVersion Calculate(SemanticVersion semanticVersion, ICommit? baseVersionSource);
SemanticVersion Calculate(SemanticVersion semanticVersion, IBaseVersion baseVersion);
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ public class SemanticVersionFormatValues(SemanticVersion semver, IGitVersionConf

public string InformationalVersion => semver.ToString("i");

public string? VersionSourceSemVer => semver.BuildMetaData.VersionSourceSemVer?.ToString();

public string? VersionSourceSha => semver.BuildMetaData.VersionSourceSha;

[Obsolete("CommitsSinceVersionSource has been deprecated. Use VersionSourceDistance instead.")]
Expand Down
1 change: 1 addition & 0 deletions src/GitVersion.Core/VersionCalculation/VariableProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ public GitVersionVariables GetVariablesFor(
semverFormatValues.WeightedPreReleaseNumber,
informationalVersion,
semverFormatValues.CommitDate,
semverFormatValues.VersionSourceSemVer,
semverFormatValues.VersionSourceSha,
semverFormatValues.VersionSourceDistance,
semverFormatValues.VersionSourceDistance,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using GitVersion.Common;
using GitVersion.Git;
using GitVersion.Logging;

namespace GitVersion.VersionCalculation;
Expand All @@ -8,7 +7,7 @@ internal sealed class ContinuousDeliveryVersionCalculator(
ILog log, IRepositoryStore repositoryStore, Lazy<GitVersionContext> versionContext)
: VersionCalculatorBase(log, repositoryStore, versionContext), IDeploymentModeCalculator
{
public SemanticVersion Calculate(SemanticVersion semanticVersion, ICommit? baseVersionSource)
public SemanticVersion Calculate(SemanticVersion semanticVersion, IBaseVersion baseVersion)
{
using (this.log.IndentLog("Using continuous delivery workflow to calculate the incremented version."))
{
Expand All @@ -18,13 +17,13 @@ public SemanticVersion Calculate(SemanticVersion semanticVersion, ICommit? baseV
throw new WarningException("Continuous delivery requires a pre-release tag.");
}

return CalculateInternal(semanticVersion, baseVersionSource);
return CalculateInternal(semanticVersion, baseVersion);
}
}

private SemanticVersion CalculateInternal(SemanticVersion semanticVersion, ICommit? baseVersionSource)
private SemanticVersion CalculateInternal(SemanticVersion semanticVersion, IBaseVersion baseVersion)
{
var buildMetaData = CreateVersionBuildMetaData(baseVersionSource);
var buildMetaData = CreateVersionBuildMetaData(baseVersion);

return new SemanticVersion(semanticVersion)
{
Expand Down
Loading
Loading