diff --git a/build/common/Addins/GitVersion/GitVersion.cs b/build/common/Addins/GitVersion/GitVersion.cs
index 4ef5292f92..c58a74bf31 100644
--- a/build/common/Addins/GitVersion/GitVersion.cs
+++ b/build/common/Addins/GitVersion/GitVersion.cs
@@ -126,6 +126,11 @@ public sealed class GitVersion
///
public int? VersionSourceDistance { get; set; }
+ ///
+ /// Gets or sets the version source increment. The increment strategy used for the version calculation. Possible values: None, Patch, Minor, Major.
+ ///
+ public string? VersionSourceIncrement { get; set; }
+
///
/// Gets or sets the version source SemVer. The semantic version of the commit used as version source.
///
diff --git a/docs/input/docs/reference/variables.md b/docs/input/docs/reference/variables.md
index c55b97cdb6..ed1f2f8c7e 100644
--- a/docs/input/docs/reference/variables.md
+++ b/docs/input/docs/reference/variables.md
@@ -35,6 +35,7 @@ what is available. For the `release/3.0.0` branch of GitVersion it shows:
"ShortSha": "28c8531",
"UncommittedChanges": 0,
"VersionSourceDistance": 7,
+ "VersionSourceIncrement": "Minor",
"VersionSourceSemVer": "3.22.11",
"VersionSourceSha": "28c853159a46b5a87e6cc9c4f6e940c59d6bc68a",
"WeightedPreReleaseNumber": 1099
@@ -69,6 +70,7 @@ Each property of the above JSON document is described in the below table.
| `ShortSha` | The `Sha` limited to 7 characters. |
| `UncommittedChanges` | The number of uncommitted changes present in the repository. |
| `VersionSourceDistance` | The number of commits since the version source. |
+| `VersionSourceIncrement` | The increment strategy used for the version calculation. Possible values: `None`, `Patch`, `Minor`, `Major`. |
| `VersionSourceSemVer` | The semantic version of the commit used as version source. |
| `VersionSourceSha` | The SHA of the commit used as version source. |
| `WeightedPreReleaseNumber` | A summation of branch specific `pre-release-weight` and the `PreReleaseNumber`. Can be used to obtain a monotonically increasing version number across the branches. |
diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
index 0f9a0df2b7..f3034638f1 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,
+ "VersionSourceIncrement": "Patch",
"VersionSourceSemVer": "4.10.2",
"VersionSourceSha": "4.10.2",
"WeightedPreReleaseNumber": 19
diff --git a/src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs b/src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs
index 23f854c139..046eb906c2 100644
--- a/src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs
+++ b/src/GitVersion.Core.Tests/Helpers/TestableGitVersionVariables.cs
@@ -27,6 +27,7 @@ internal record TestableGitVersionVariables() : GitVersionVariables(
ShortSha: "",
UncommittedChanges: "",
VersionSourceDistance: "",
+ VersionSourceIncrement: "",
VersionSourceSemVer: "",
VersionSourceSha: "",
WeightedPreReleaseNumber: ""
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 cc8743f21e..f929e2f108 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "1.1.2",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 4
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 5352bab7b4..9099d56669 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
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 96dac77be7..5ade547ffd 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
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 fee70f4123..c2223c76e4 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 4
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 5971f82d87..2a04e2f8ea 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
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 e5cc41eaab..842c7a575e 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 55009
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 c200cb21fa..21cdc0addd 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 8
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 1fae9482d2..68f060df9c 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 5
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 0875361a4e..a62fe0a46b 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,
+ "VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
diff --git a/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs b/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs
index c9550c8a49..1ea63bd649 100644
--- a/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs
+++ b/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs
@@ -26,6 +26,7 @@ public record GitVersionVariables(
string? ShortSha,
string? UncommittedChanges,
string? VersionSourceDistance,
+ string? VersionSourceIncrement,
string? VersionSourceSemVer,
string? VersionSourceSha,
string WeightedPreReleaseNumber
@@ -57,6 +58,7 @@ string WeightedPreReleaseNumber
nameof(ShortSha),
nameof(UncommittedChanges),
nameof(VersionSourceDistance),
+ nameof(VersionSourceIncrement),
nameof(VersionSourceSemVer),
nameof(VersionSourceSha),
nameof(WeightedPreReleaseNumber)
@@ -88,6 +90,7 @@ string WeightedPreReleaseNumber
{ nameof(ShortSha), ShortSha },
{ nameof(UncommittedChanges), UncommittedChanges },
{ nameof(VersionSourceDistance), VersionSourceDistance },
+ { nameof(VersionSourceIncrement), VersionSourceIncrement },
{ nameof(VersionSourceSemVer), VersionSourceSemVer },
{ nameof(VersionSourceSha), VersionSourceSha },
{ nameof(WeightedPreReleaseNumber), WeightedPreReleaseNumber }
diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt
index 0ae491b345..b7e790ccb0 100644
--- a/src/GitVersion.Core/PublicAPI.Unshipped.txt
+++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt
@@ -1,15 +1,20 @@
#nullable enable
-GitVersion.OutputVariables.GitVersionVariables.Deconstruct(out string? AssemblySemFileVer, out string? AssemblySemVer, out string? BranchName, out string? BuildMetaData, out string? CommitDate, out string? CommitsSinceVersionSource, out string? EscapedBranchName, out string? FullBuildMetaData, out string! FullSemVer, out string? InformationalVersion, out string! Major, out string! MajorMinorPatch, out string! Minor, out string! Patch, out string? PreReleaseLabel, out string? PreReleaseLabelWithDash, out string? PreReleaseNumber, out string? PreReleaseTag, out string? PreReleaseTagWithDash, out string! SemVer, out string? Sha, out string? ShortSha, out string? UncommittedChanges, out string? VersionSourceDistance, out string? VersionSourceSemVer, out string? VersionSourceSha, out string! WeightedPreReleaseNumber) -> void
-GitVersion.OutputVariables.GitVersionVariables.GitVersionVariables(string? AssemblySemFileVer, string? AssemblySemVer, string? BranchName, string? BuildMetaData, string? CommitDate, string? CommitsSinceVersionSource, string? EscapedBranchName, string? FullBuildMetaData, string! FullSemVer, string? InformationalVersion, string! Major, string! MajorMinorPatch, string! Minor, string! Patch, string? PreReleaseLabel, string? PreReleaseLabelWithDash, string? PreReleaseNumber, string? PreReleaseTag, string? PreReleaseTagWithDash, string! SemVer, string? Sha, string? ShortSha, string? UncommittedChanges, string? VersionSourceDistance, string? VersionSourceSemVer, string? VersionSourceSha, string! WeightedPreReleaseNumber) -> void
+GitVersion.OutputVariables.GitVersionVariables.Deconstruct(out string? AssemblySemFileVer, out string? AssemblySemVer, out string? BranchName, out string? BuildMetaData, out string? CommitDate, out string? CommitsSinceVersionSource, out string? EscapedBranchName, out string? FullBuildMetaData, out string! FullSemVer, out string? InformationalVersion, out string! Major, out string! MajorMinorPatch, out string! Minor, out string! Patch, out string? PreReleaseLabel, out string? PreReleaseLabelWithDash, out string? PreReleaseNumber, out string? PreReleaseTag, out string? PreReleaseTagWithDash, out string! SemVer, out string? Sha, out string? ShortSha, out string? UncommittedChanges, out string? VersionSourceDistance, out string? VersionSourceIncrement, out string? VersionSourceSemVer, out string? VersionSourceSha, out string! WeightedPreReleaseNumber) -> void
+GitVersion.OutputVariables.GitVersionVariables.GitVersionVariables(string? AssemblySemFileVer, string? AssemblySemVer, string? BranchName, string? BuildMetaData, string? CommitDate, string? CommitsSinceVersionSource, string? EscapedBranchName, string? FullBuildMetaData, string! FullSemVer, string? InformationalVersion, string! Major, string! MajorMinorPatch, string! Minor, string! Patch, string? PreReleaseLabel, string? PreReleaseLabelWithDash, string? PreReleaseNumber, string? PreReleaseTag, string? PreReleaseTagWithDash, string! SemVer, string? Sha, string? ShortSha, string? UncommittedChanges, string? VersionSourceDistance, string? VersionSourceIncrement, string? VersionSourceSemVer, string? VersionSourceSha, string! WeightedPreReleaseNumber) -> void
GitVersion.OutputVariables.GitVersionVariables.VersionSourceDistance.get -> string?
GitVersion.OutputVariables.GitVersionVariables.VersionSourceDistance.init -> void
+GitVersion.OutputVariables.GitVersionVariables.VersionSourceIncrement.get -> string?
+GitVersion.OutputVariables.GitVersionVariables.VersionSourceIncrement.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.VersionSourceIncrement.get -> GitVersion.VersionField
+GitVersion.SemanticVersionBuildMetaData.VersionSourceIncrement.init -> void
GitVersion.SemanticVersionBuildMetaData.VersionSourceSemVer.get -> GitVersion.SemanticVersion?
GitVersion.SemanticVersionBuildMetaData.VersionSourceSemVer.init -> void
GitVersion.SemanticVersionFormatValues.VersionSourceDistance.get -> string!
+GitVersion.SemanticVersionFormatValues.VersionSourceIncrement.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 7867ff111a..4c79bd426d 100644
--- a/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs
+++ b/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs
@@ -34,6 +34,8 @@ public class SemanticVersionBuildMetaData : IFormattable, IEquatable Equals(obj as SemanticVersionBuildMetaData);
diff --git a/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionFormatValues.cs b/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionFormatValues.cs
index b5338f7581..f21d1d852e 100644
--- a/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionFormatValues.cs
+++ b/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionFormatValues.cs
@@ -62,4 +62,6 @@ public class SemanticVersionFormatValues(SemanticVersion semver, IGitVersionConf
public string VersionSourceDistance => semver.BuildMetaData.VersionSourceDistance.ToString(CultureInfo.InvariantCulture);
public string UncommittedChanges => semver.BuildMetaData.UncommittedChanges.ToString(CultureInfo.InvariantCulture);
+
+ public string VersionSourceIncrement => semver.BuildMetaData.VersionSourceIncrement.ToString();
}
diff --git a/src/GitVersion.Core/VersionCalculation/VariableProvider.cs b/src/GitVersion.Core/VersionCalculation/VariableProvider.cs
index 8ac2a40025..7b55b400a3 100644
--- a/src/GitVersion.Core/VersionCalculation/VariableProvider.cs
+++ b/src/GitVersion.Core/VersionCalculation/VariableProvider.cs
@@ -64,6 +64,7 @@ public GitVersionVariables GetVariablesFor(
ShortSha: semverFormatValues.ShortSha,
UncommittedChanges: semverFormatValues.UncommittedChanges,
VersionSourceDistance: semverFormatValues.VersionSourceDistance,
+ VersionSourceIncrement: semverFormatValues.VersionSourceIncrement,
VersionSourceSemVer: semverFormatValues.VersionSourceSemVer,
VersionSourceSha: semverFormatValues.VersionSourceSha,
WeightedPreReleaseNumber: semverFormatValues.WeightedPreReleaseNumber);
diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs
index 2de9cde156..f7a630f51f 100644
--- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs
+++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs
@@ -50,7 +50,7 @@ public virtual SemanticVersion FindVersion()
}
}
- var nextVersion = CalculateNextVersion(Context.CurrentBranch, Context.Configuration);
+ var (nextVersion, versionSourceIncrement) = CalculateNextVersion(Context.CurrentBranch, Context.Configuration);
if (Context.IsCurrentCommitTagged && someBranchRelatedPropertiesMightBeNotKnown
&& nextVersion.Configuration.PreventIncrementWhenCurrentCommitTagged)
@@ -98,7 +98,13 @@ public virtual SemanticVersion FindVersion()
};
}
- return semanticVersion;
+ return new SemanticVersion(semanticVersion)
+ {
+ BuildMetaData = new SemanticVersionBuildMetaData(semanticVersion.BuildMetaData)
+ {
+ VersionSourceIncrement = versionSourceIncrement
+ }
+ };
}
private bool TryGetSemanticVersion(
@@ -152,7 +158,7 @@ private SemanticVersion CalculateSemanticVersion(
return deploymentModeCalculator.Calculate(semanticVersion, baseVersion);
}
- private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguration configuration)
+ private (NextVersion NextVersion, VersionField Increment) CalculateNextVersion(IBranch branch, IGitVersionConfiguration configuration)
{
var nextVersions = GetNextVersions(branch, configuration);
log.Separator();
@@ -212,7 +218,8 @@ private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguratio
log.Info($"Base version used: {calculatedBase}");
log.Separator();
- return new(maxVersion.IncrementedVersion, calculatedBase, maxVersion.BranchConfiguration);
+ var increment = (maxVersion.BaseVersion as BaseVersion)?.Operator?.Increment ?? VersionField.None;
+ return (new(maxVersion.IncrementedVersion, calculatedBase, maxVersion.BranchConfiguration), increment);
}
private static NextVersion CompareVersions(NextVersion version1, NextVersion version2)
diff --git a/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt b/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt
index 2c80d73e04..03c012c827 100644
--- a/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt
+++ b/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt
@@ -1,5 +1,7 @@
#nullable enable
GitVersion.MsBuild.Tasks.GetVersion.VersionSourceDistance.get -> string!
GitVersion.MsBuild.Tasks.GetVersion.VersionSourceDistance.set -> void
+GitVersion.MsBuild.Tasks.GetVersion.VersionSourceIncrement.get -> string!
+GitVersion.MsBuild.Tasks.GetVersion.VersionSourceIncrement.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 dcf9f76730..24e60ea19f 100644
--- a/src/GitVersion.MsBuild/Tasks/GetVersion.cs
+++ b/src/GitVersion.MsBuild/Tasks/GetVersion.cs
@@ -77,6 +77,9 @@ public class GetVersion : GitVersionTaskBase
[Output]
public string VersionSourceDistance { get; set; }
+ [Output]
+ public string VersionSourceIncrement { get; set; }
+
[Output]
public string VersionSourceSemVer { get; set; }
diff --git a/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets b/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets
index 3dba803ebf..43b18b00e9 100644
--- a/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets
+++ b/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets
@@ -63,6 +63,7 @@
+
@@ -105,6 +106,7 @@
GitVersion_ShortSha=$(GitVersion_ShortSha);$(DefineConstants)
GitVersion_UncommittedChanges=$(GitVersion_UncommittedChanges);$(DefineConstants)
GitVersion_VersionSourceDistance=$(GitVersion_VersionSourceDistance);$(DefineConstants)
+ GitVersion_VersionSourceIncrement=$(GitVersion_VersionSourceIncrement);$(DefineConstants)
GitVersion_VersionSourceSemVer=$(GitVersion_VersionSourceSemVer);$(DefineConstants)
GitVersion_VersionSourceSha=$(GitVersion_VersionSourceSha);$(DefineConstants)
GitVersion_WeightedPreReleaseNumber=$(GitVersion_WeightedPreReleaseNumber);$(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 611dfa6800..71739ed61f 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 @@
+
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 611dfa6800..71739ed61f 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 @@
+
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 e7145c77f7..d069897580 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 VersionSourceIncrement = "None";
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 9be73f8071..456ce9c797 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 VersionSourceIncrement = "None";
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 bc89595b19..5ba53b70cc 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,6 +38,7 @@ type GitVersionInformation =
static member ShortSha = "commitShortSha"
static member UncommittedChanges = "0"
static member VersionSourceDistance = "5"
+ static member VersionSourceIncrement = "None"
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 efc9660783..0258ee7c3e 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,6 +38,7 @@ type GitVersionInformation =
static member ShortSha = "commitShortSha"
static member UncommittedChanges = "0"
static member VersionSourceDistance = "5"
+ static member VersionSourceIncrement = "None"
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 945890ec97..258c7c1d0d 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 VersionSourceIncrement As String = "None"
Public Shared VersionSourceSemVer As String = "1.2.2"
Public Shared VersionSourceSha As String = "versionSourceSha"
Public Shared WeightedPreReleaseNumber As String = "4"
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 32845a9b3f..8ae2e17df2 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 VersionSourceIncrement As String = "None"
Public Shared VersionSourceSemVer As String = "1.2.2"
Public Shared VersionSourceSha As String = "versionSourceSha"
Public Shared WeightedPreReleaseNumber As String = "4"
diff --git a/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs b/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs
index db2705ffa0..ca6d4c9017 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 increment strategy used for the version calculation. Possible values: None, Patch, Minor, Major.")]
+ public string? VersionSourceIncrement { get; set; }
+
[JsonPropertyDescription("The semantic version of the commit used as version source.")]
public string? VersionSourceSemVer { get; set; }