diff --git a/docs/input/docs/reference/variables.md b/docs/input/docs/reference/variables.md index d4027f0172..661dac335c 100644 --- a/docs/input/docs/reference/variables.md +++ b/docs/input/docs/reference/variables.md @@ -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, @@ -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. | diff --git a/src/GitVersion.Core.Tests/CommitDateTests.cs b/src/GitVersion.Core.Tests/CommitDateTests.cs index 2b0d94ebd6..fd0ce38758 100644 --- a/src/GitVersion.Core.Tests/CommitDateTests.cs +++ b/src/GitVersion.Core.Tests/CommitDateTests.cs @@ -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, diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs index c92503106a..8f36a4f0c0 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs @@ -48,6 +48,7 @@ public class GitVersionExecutorTests : TestBase "ShortSha": "dd2a29af", "UncommittedChanges": 0, "VersionSourceDistance": 19, + "VersionSourceSemVer": "4.10.2", "VersionSourceSha": "4.10.2", "WeightedPreReleaseNumber": 19 } @@ -420,6 +421,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); } @@ -483,6 +485,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); } @@ -578,6 +581,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(); diff --git a/src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs b/src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs index 0237f5b4ec..a23e8f46e8 100644 --- a/src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs +++ b/src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs @@ -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: ""); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/JsonVersionBuilderTests.Json.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/JsonVersionBuilderTests.Json.approved.txt index 3e7054fe81..cc8743f21e 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/JsonVersionBuilderTests.Json.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/JsonVersionBuilderTests.Json.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "1.1.2", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 4 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt index 956347e9e5..5352bab7b4 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 0 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInfoFormat.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInfoFormat.approved.txt index b1130e9f0b..96dac77be7 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInfoFormat.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInfoFormat.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 0 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForPreRelease.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForPreRelease.approved.txt index c59b621163..fee70f4123 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForPreRelease.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForPreRelease.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 4 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForStable.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForStable.approved.txt index b64bbdffe8..5971f82d87 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForStable.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForStable.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 0 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForMainBranchWithEmptyLabel.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForMainBranchWithEmptyLabel.approved.txt index 60c3ee572d..e5cc41eaab 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForMainBranchWithEmptyLabel.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForMainBranchWithEmptyLabel.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 55009 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForPreRelease.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForPreRelease.approved.txt index c6edf6f27b..c200cb21fa 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForPreRelease.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForPreRelease.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 8 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStable.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStable.approved.txt index a0b1cf3bd9..1fae9482d2 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStable.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStable.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 5 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommitIsTagged.approved.txt b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommitIsTagged.approved.txt index 215754d67e..0875361a4e 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommitIsTagged.approved.txt +++ b/src/GitVersion.Core.Tests/VersionCalculation/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommitIsTagged.approved.txt @@ -23,6 +23,7 @@ "ShortSha": "commitShortSha", "UncommittedChanges": 0, "VersionSourceDistance": 5, + "VersionSourceSemVer": "", "VersionSourceSha": "versionSourceSha", "WeightedPreReleaseNumber": 0 } \ No newline at end of file diff --git a/src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs index 55c1298825..65315321af 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs @@ -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(); diff --git a/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs b/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs index b594f74b1a..0a74e23463 100644 --- a/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs +++ b/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs @@ -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, @@ -52,6 +53,7 @@ public record GitVersionVariables(string Major, nameof(WeightedPreReleaseNumber), nameof(InformationalVersion), nameof(CommitDate), + nameof(VersionSourceSemVer), nameof(VersionSourceSha), nameof(CommitsSinceVersionSource), nameof(VersionSourceDistance), @@ -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 }, diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index 0f7b979f4e..fe1c3b54fb 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -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? @@ -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.VersionCalculation.IIncrementStrategyFinder diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 13858b3344..67343e3ea4 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -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! diff --git a/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs b/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs index b628f39b0e..7867ff111a 100644 --- a/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs +++ b/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs @@ -24,6 +24,8 @@ public class SemanticVersionBuildMetaData : IFormattable, IEquatable VersionSourceDistance; @@ -36,8 +38,8 @@ 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; @@ -45,6 +47,7 @@ public SemanticVersionBuildMetaData(string? versionSourceSha, long? commitsSince this.Branch = branch; this.CommitDate = commitDate; this.OtherMetaData = otherMetadata; + this.VersionSourceSemVer = versionSourceSemVer; this.VersionSourceSha = versionSourceSha; this.VersionSourceDistance = commitsSinceTag ?? 0; this.UncommittedChanges = numberOfUnCommittedChanges; @@ -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; diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IDeploymentModeCalculator.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IDeploymentModeCalculator.cs index 28c6cec386..0d01bf512d 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IDeploymentModeCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IDeploymentModeCalculator.cs @@ -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); } diff --git a/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionFormatValues.cs b/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionFormatValues.cs index 3213c7df3b..b5338f7581 100644 --- a/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionFormatValues.cs +++ b/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionFormatValues.cs @@ -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.")] diff --git a/src/GitVersion.Core/VersionCalculation/VariableProvider.cs b/src/GitVersion.Core/VersionCalculation/VariableProvider.cs index 4eda9e5b9d..faf0db6ad0 100644 --- a/src/GitVersion.Core/VersionCalculation/VariableProvider.cs +++ b/src/GitVersion.Core/VersionCalculation/VariableProvider.cs @@ -62,6 +62,7 @@ public GitVersionVariables GetVariablesFor( semverFormatValues.WeightedPreReleaseNumber, informationalVersion, semverFormatValues.CommitDate, + semverFormatValues.VersionSourceSemVer, semverFormatValues.VersionSourceSha, semverFormatValues.VersionSourceDistance, semverFormatValues.VersionSourceDistance, diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs index ca436a59d2..865ec5d917 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs @@ -1,5 +1,4 @@ using GitVersion.Common; -using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; @@ -8,7 +7,7 @@ internal sealed class ContinuousDeliveryVersionCalculator( ILog log, IRepositoryStore repositoryStore, Lazy 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.")) { @@ -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) { diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs index 7337f99b78..deeb94fe9a 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs @@ -1,5 +1,4 @@ using GitVersion.Common; -using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; @@ -8,17 +7,17 @@ internal sealed class ContinuousDeploymentVersionCalculator( ILog log, IRepositoryStore repositoryStore, Lazy 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 deployment workflow to calculate the incremented version.")) { - 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) { diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs index 537ee7b360..d13b586c3e 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs @@ -1,5 +1,4 @@ using GitVersion.Common; -using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; @@ -8,17 +7,17 @@ internal sealed class ManualDeploymentVersionCalculator( ILog log, IRepositoryStore repositoryStore, Lazy 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 manual deployment workflow to calculate the incremented version.")) { - 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) { diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index fc38d26801..2de9cde156 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -73,7 +73,7 @@ public virtual SemanticVersion FindVersion() var semanticVersion = CalculateSemanticVersion( deploymentMode: nextVersion.Configuration.DeploymentMode, semanticVersion: nextVersion.IncrementedVersion, - baseVersionSource: nextVersion.BaseVersion.BaseVersionSource + baseVersion: nextVersion.BaseVersion ); var ignore = Context.Configuration.Ignore; @@ -114,6 +114,7 @@ private bool TryGetSemanticVersion( if (currentCommitTaggedVersion is null) return result is not null; SemanticVersionBuildMetaData semanticVersionBuildMetaData = new( + versionSourceSemVer: currentCommitTaggedVersion.Value, versionSourceSha: Context.CurrentCommit.Sha, commitsSinceTag: null, branch: Context.CurrentBranch.Name.Friendly, @@ -139,7 +140,7 @@ private bool TryGetSemanticVersion( } private SemanticVersion CalculateSemanticVersion( - DeploymentMode deploymentMode, SemanticVersion semanticVersion, ICommit? baseVersionSource) + DeploymentMode deploymentMode, SemanticVersion semanticVersion, IBaseVersion baseVersion) { IDeploymentModeCalculator deploymentModeCalculator = deploymentMode switch { @@ -148,7 +149,7 @@ private SemanticVersion CalculateSemanticVersion( DeploymentMode.ContinuousDeployment => deploymentModeCalculators.SingleOfType(), _ => throw new InvalidEnumArgumentException(nameof(deploymentMode), (int)deploymentMode, typeof(DeploymentMode)) }; - return deploymentModeCalculator.Calculate(semanticVersion, baseVersionSource); + return deploymentModeCalculator.Calculate(semanticVersion, baseVersion); } private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguration configuration) diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs index db6c3eb135..c565628acb 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs @@ -1,6 +1,5 @@ using GitVersion.Common; using GitVersion.Extensions; -using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; @@ -14,20 +13,21 @@ internal abstract class VersionCalculatorBase( protected GitVersionContext Context => this.versionContext.Value; - protected SemanticVersionBuildMetaData CreateVersionBuildMetaData(ICommit? baseVersionSource) + protected SemanticVersionBuildMetaData CreateVersionBuildMetaData(IBaseVersion baseVersion) { var commitLogs = this.repositoryStore.GetCommitLog( - baseVersionSource: baseVersionSource, + baseVersionSource: baseVersion.BaseVersionSource, currentCommit: Context.CurrentCommit, ignore: Context.Configuration.Ignore ); var commitsSinceTag = commitLogs.Count; - this.log.Info($"{commitsSinceTag} commits found between {baseVersionSource} and {Context.CurrentCommit}"); + this.log.Info($"{commitsSinceTag} commits found between {baseVersion.BaseVersionSource} and {Context.CurrentCommit}"); var shortSha = Context.CurrentCommit.Id.ToString(7); return new SemanticVersionBuildMetaData( - versionSourceSha: baseVersionSource?.Sha, + versionSourceSemVer: baseVersion.SemanticVersion, + versionSourceSha: baseVersion.BaseVersionSource?.Sha, commitsSinceTag: commitsSinceTag, branch: Context.CurrentBranch.Name.Friendly, commitSha: Context.CurrentCommit.Sha, diff --git a/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt b/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt index 8baadd300b..2c80d73e04 100644 --- a/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt +++ b/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt @@ -1,3 +1,5 @@ #nullable enable GitVersion.MsBuild.Tasks.GetVersion.VersionSourceDistance.get -> string! GitVersion.MsBuild.Tasks.GetVersion.VersionSourceDistance.set -> void +GitVersion.MsBuild.Tasks.GetVersion.VersionSourceSemVer.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.VersionSourceSemVer.set -> void diff --git a/src/GitVersion.MsBuild/Tasks/GetVersion.cs b/src/GitVersion.MsBuild/Tasks/GetVersion.cs index 99fb5c835f..6f1b16ed58 100644 --- a/src/GitVersion.MsBuild/Tasks/GetVersion.cs +++ b/src/GitVersion.MsBuild/Tasks/GetVersion.cs @@ -70,6 +70,9 @@ public class GetVersion : GitVersionTaskBase [Output] public string CommitDate { get; set; } + [Output] + public string VersionSourceSemVer { get; set; } + [Output] public string VersionSourceSha { get; set; } diff --git a/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets b/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets index 77fa353fbe..c1b6dadb29 100644 --- a/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets +++ b/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets @@ -61,6 +61,7 @@ + @@ -103,6 +104,7 @@ GitVersion_ShortSha=$(GitVersion_ShortSha);$(DefineConstants) GitVersion_CommitDate=$(GitVersion_CommitDate);$(DefineConstants) GitVersion_VersionSourceSha=$(GitVersion_VersionSourceSha);$(DefineConstants) + GitVersion_VersionSourceSemVer=$(GitVersion_VersionSourceSemVer);$(DefineConstants) GitVersion_CommitsSinceVersionSource=$(GitVersion_CommitsSinceVersionSource);$(DefineConstants) GitVersion_VersionSourceDistance=$(GitVersion_VersionSourceDistance);$(DefineConstants) GitVersion_UncommittedChanges=$(GitVersion_UncommittedChanges);$(DefineConstants) diff --git a/src/GitVersion.Output.Tests/Output/Approved/WixFileTests.UpdateWixVersionFile.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/WixFileTests.UpdateWixVersionFile.approved.txt index 7944b3643f..611dfa6800 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/WixFileTests.UpdateWixVersionFile.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/WixFileTests.UpdateWixVersionFile.approved.txt @@ -24,6 +24,7 @@ + \ No newline at end of file diff --git a/src/GitVersion.Output.Tests/Output/Approved/WixFileTests.UpdateWixVersionFileWhenFileAlreadyExists.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/WixFileTests.UpdateWixVersionFileWhenFileAlreadyExists.approved.txt index 7944b3643f..611dfa6800 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/WixFileTests.UpdateWixVersionFileWhenFileAlreadyExists.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/WixFileTests.UpdateWixVersionFileWhenFileAlreadyExists.approved.txt @@ -24,6 +24,7 @@ + \ No newline at end of file diff --git a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt index 0fa7320008..e7145c77f7 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt @@ -36,6 +36,7 @@ static class GitVersionInformation public const string ShortSha = "commitShortSha"; public const string UncommittedChanges = "0"; public const string VersionSourceDistance = "5"; + public const string VersionSourceSemVer = "1.2.2"; public const string VersionSourceSha = "versionSourceSha"; public const string WeightedPreReleaseNumber = "4"; } diff --git a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt index 1e0c4b4c5a..9be73f8071 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt @@ -38,6 +38,7 @@ namespace My.Custom.Namespace public const string ShortSha = "commitShortSha"; public const string UncommittedChanges = "0"; public const string VersionSourceDistance = "5"; + public const string VersionSourceSemVer = "1.2.2"; public const string VersionSourceSha = "versionSourceSha"; public const string WeightedPreReleaseNumber = "4"; } diff --git a/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt index 42634dd993..bc89595b19 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt @@ -38,5 +38,6 @@ type GitVersionInformation = static member ShortSha = "commitShortSha" static member UncommittedChanges = "0" static member VersionSourceDistance = "5" + static member VersionSourceSemVer = "1.2.2" static member VersionSourceSha = "versionSourceSha" static member WeightedPreReleaseNumber = "4" diff --git a/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt index 354146d95e..efc9660783 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt @@ -38,5 +38,6 @@ type GitVersionInformation = static member ShortSha = "commitShortSha" static member UncommittedChanges = "0" static member VersionSourceDistance = "5" + static member VersionSourceSemVer = "1.2.2" static member VersionSourceSha = "versionSourceSha" static member WeightedPreReleaseNumber = "4" diff --git a/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt index 2c704a9e3c..945890ec97 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt @@ -39,6 +39,7 @@ Namespace Global Public Shared ShortSha As String = "commitShortSha" Public Shared UncommittedChanges As String = "0" Public Shared VersionSourceDistance As String = "5" + Public Shared VersionSourceSemVer As String = "1.2.2" Public Shared VersionSourceSha As String = "versionSourceSha" Public Shared WeightedPreReleaseNumber As String = "4" End Class diff --git a/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt index 721167f539..32845a9b3f 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt @@ -39,6 +39,7 @@ Namespace My.Custom.Namespace Public Shared ShortSha As String = "commitShortSha" Public Shared UncommittedChanges As String = "0" Public Shared VersionSourceDistance As String = "5" + Public Shared VersionSourceSemVer As String = "1.2.2" Public Shared VersionSourceSha As String = "versionSourceSha" Public Shared WeightedPreReleaseNumber As String = "4" End Class diff --git a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs index 90d7cf0c93..c6c64e7967 100644 --- a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs @@ -421,7 +421,8 @@ private void VerifyAssemblyInfoFile( Action? verify = null) { var file = Substitute.For(); - var version = new SemanticVersion { BuildMetaData = new("versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0), Major = 2, Minor = 3, Patch = 1 }; + var versionSourceSemVer = new SemanticVersion(1, 2, 2); + var version = new SemanticVersion { BuildMetaData = new(versionSourceSemVer, "versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0), Major = 2, Minor = 3, Patch = 1 }; file.Exists(fileName).Returns(true); file.ReadAllText(fileName).Returns(assemblyFileContent); diff --git a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs index 920627d8c5..a98537f3dc 100644 --- a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs +++ b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs @@ -1,3 +1,4 @@ +using System.Globalization; using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; @@ -19,35 +20,9 @@ public class GitVersionInfoGeneratorTests : TestBase [TestCase("vb")] public void ShouldCreateFile(string fileExtension) { - var semanticVersion = new SemanticVersion - { - Major = 1, - Minor = 2, - Patch = 3, - PreReleaseTag = "unstable4", - BuildMetaData = new("versionSourceSha", 5, - "feature1", "commitSha", "commitShortSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z"), 0) - }; - - var sp = ConfigureServices(); - - var fileSystem = sp.GetRequiredService(); - - var directory = FileSystemHelper.Path.Combine(FileSystemHelper.Path.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); - if (!fileSystem.Directory.Exists(directory)) - fileSystem.Directory.CreateDirectory(directory); - var fileName = "GitVersionInformation.g." + fileExtension; - var fullPath = FileSystemHelper.Path.Combine(directory, fileName); - - var variableProvider = sp.GetRequiredService(); - var variables = variableProvider.GetVariablesFor(semanticVersion, EmptyConfigurationBuilder.New.Build(), 0); - using var generator = sp.GetRequiredService(); - - generator.Execute(variables, new(directory, fileName)); - - fileSystem.File.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(FileSystemHelper.Path.Combine("Approved", fileExtension))); + var fileContents = GenerateGitVersionInformationFile(fileExtension); - FileSystemHelper.Directory.DeleteDirectory(directory); + fileContents.ShouldMatchApproved(c => c.SubFolder(FileSystemHelper.Path.Combine("Approved", fileExtension))); } /// @@ -60,34 +35,68 @@ public void ShouldProperlyOutputNamespaceDeclaration(string fileExtension) { const string targetNamespace = "My.Custom.Namespace"; - var semanticVersion = new SemanticVersion + var fileContents = GenerateGitVersionInformationFile(fileExtension, targetNamespace); + + fileContents.ShouldMatchApproved(c => c.SubFolder(FileSystemHelper.Path.Combine("Approved", fileExtension))); + } + + private static SemanticVersion CreateSemanticVersion() + { + var versionSourceSemVer = new SemanticVersion(1, 2, 2); + return new SemanticVersion { Major = 1, Minor = 2, Patch = 3, 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", CultureInfo.InvariantCulture), + 0) }; + } - var sp = ConfigureServices(); - - var fileSystem = sp.GetRequiredService(); + private static (string Directory, string FileName, string FullPath) CreateTempOutputPath(IFileSystem fileSystem, string fileExtension) + { + var directory = FileSystemHelper.Path.Combine( + FileSystemHelper.Path.GetTempPath(), + nameof(GitVersionInfoGeneratorTests), + Guid.NewGuid().ToString()); - var directory = FileSystemHelper.Path.Combine(FileSystemHelper.Path.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); if (!fileSystem.Directory.Exists(directory)) fileSystem.Directory.CreateDirectory(directory); + var fileName = "GitVersionInformation.g." + fileExtension; var fullPath = FileSystemHelper.Path.Combine(directory, fileName); + return (directory, fileName, fullPath); + } + + private static string GenerateGitVersionInformationFile(string fileExtension, string? targetNamespace = null) + { + var semanticVersion = CreateSemanticVersion(); - var variableProvider = sp.GetRequiredService(); - var variables = variableProvider.GetVariablesFor(semanticVersion, EmptyConfigurationBuilder.New.Build(), 0); - using var generator = sp.GetRequiredService(); + var sp = ConfigureServices(); + var fileSystem = sp.GetRequiredService(); - generator.Execute(variables, new(directory, fileName, targetNamespace)); + var (directory, fileName, fullPath) = CreateTempOutputPath(fileSystem, fileExtension); + try + { + var variables = sp.GetRequiredService() + .GetVariablesFor(semanticVersion, EmptyConfigurationBuilder.New.Build(), 0); - fileSystem.File.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(FileSystemHelper.Path.Combine("Approved", fileExtension))); + using var generator = sp.GetRequiredService(); + generator.Execute(variables, new(directory, fileName, targetNamespace)); - FileSystemHelper.Directory.DeleteDirectory(directory); + return fileSystem.File.ReadAllText(fullPath); + } + finally + { + FileSystemHelper.Directory.DeleteDirectory(directory); + } } } diff --git a/src/GitVersion.Output.Tests/Output/InformationalVersionBuilderTests.cs b/src/GitVersion.Output.Tests/Output/InformationalVersionBuilderTests.cs index c3774d24b1..64af5fb236 100644 --- a/src/GitVersion.Output.Tests/Output/InformationalVersionBuilderTests.cs +++ b/src/GitVersion.Output.Tests/Output/InformationalVersionBuilderTests.cs @@ -21,13 +21,14 @@ public class InformationalVersionBuilderTests : TestBase public void ValidateInformationalVersionBuilder(string branchName, string sha, string shortSha, int major, int minor, int patch, string? tag, string? versionSourceSha, int? commitsSinceTag, string versionString) { + var versionSourceSemVer = new SemanticVersion(1, 1, 1); var semanticVersion = new SemanticVersion { Major = major, Minor = minor, Patch = patch, PreReleaseTag = tag, - BuildMetaData = new(versionSourceSha, commitsSinceTag, branchName, sha, shortSha, DateTimeOffset.MinValue, 0) + BuildMetaData = new(versionSourceSemVer, versionSourceSha, commitsSinceTag, branchName, sha, shortSha, DateTimeOffset.MinValue, 0) }; var informationalVersion = semanticVersion.ToString("i"); diff --git a/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs index d2f340a1f6..b8238d6668 100644 --- a/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs @@ -306,7 +306,9 @@ private void VerifyAssemblyInfoFile( Action? verify = null) { var file = Substitute.For(); - var version = new SemanticVersion { BuildMetaData = new("versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0), Major = 2, Minor = 3, Patch = 1 }; + var versionSourceSemVer = new SemanticVersion(1, 2, 2); + + var version = new SemanticVersion { BuildMetaData = new(versionSourceSemVer, "versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0), Major = 2, Minor = 3, Patch = 1 }; file.Exists(fileName).Returns(true); file.ReadAllText(fileName).Returns(projectFileContent); diff --git a/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs b/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs index 72c1e859c4..db2705ffa0 100644 --- a/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs +++ b/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs @@ -77,6 +77,9 @@ internal class VersionVariablesJsonModel [JsonPropertyDescription("The number of commits since the version source.")] public int? VersionSourceDistance { get; set; } + [JsonPropertyDescription("The semantic version of the commit used as version source.")] + public string? VersionSourceSemVer { get; set; } + [JsonPropertyDescription("The SHA of the commit used as version source.")] public string? VersionSourceSha { get; set; }