Skip to content
Closed
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
5 changes: 5 additions & 0 deletions build/common/Addins/GitVersion/GitVersion.cs
Comment thread
arturcic marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,11 @@ public sealed class GitVersion
/// </summary>
public int? VersionSourceDistance { get; set; }

/// <summary>
/// Gets or sets the version source increment. The increment strategy used for the version calculation. Possible values: None, Patch, Minor, Major.
/// </summary>
public string? VersionSourceIncrement { get; set; }

/// <summary>
/// Gets or sets the version source SemVer. The semantic version of the commit used as version source.
/// </summary>
Expand Down
2 changes: 2 additions & 0 deletions docs/input/docs/reference/variables.md
Comment thread
arturcic marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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. |
Expand Down
1 change: 1 addition & 0 deletions src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ internal record TestableGitVersionVariables() : GitVersionVariables(
ShortSha: "",
UncommittedChanges: "",
VersionSourceDistance: "",
VersionSourceIncrement: "",
VersionSourceSemVer: "",
VersionSourceSha: "",
WeightedPreReleaseNumber: ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The VersionSourceSemVer is of value 1.1.2 and SemVer is 1.2.0-unstable.4. Thus VersionSourceIncrement should be of value Minor

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

well copilot does not necessary understand the changes, so that's why I think you can have a look a bit more closer

"VersionSourceSemVer": "1.1.2",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 55009
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 8
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 5
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"ShortSha": "commitShortSha",
"UncommittedChanges": 0,
"VersionSourceDistance": 5,
"VersionSourceIncrement": "None",
"VersionSourceSemVer": "",
"VersionSourceSha": "versionSourceSha",
"WeightedPreReleaseNumber": 0
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 @@ -26,6 +26,7 @@ public record GitVersionVariables(
string? ShortSha,
string? UncommittedChanges,
string? VersionSourceDistance,
string? VersionSourceIncrement,
string? VersionSourceSemVer,
string? VersionSourceSha,
string WeightedPreReleaseNumber
Expand Down Expand Up @@ -57,6 +58,7 @@ string WeightedPreReleaseNumber
nameof(ShortSha),
nameof(UncommittedChanges),
nameof(VersionSourceDistance),
nameof(VersionSourceIncrement),
nameof(VersionSourceSemVer),
nameof(VersionSourceSha),
nameof(WeightedPreReleaseNumber)
Expand Down Expand Up @@ -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 }
Expand Down
9 changes: 7 additions & 2 deletions src/GitVersion.Core/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -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!
3 changes: 3 additions & 0 deletions src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public class SemanticVersionBuildMetaData : IFormattable, IEquatable<SemanticVer

public long UncommittedChanges { get; init; }

public VersionField VersionSourceIncrement { get; init; }

public SemanticVersionBuildMetaData()
{
}
Expand Down Expand Up @@ -67,6 +69,7 @@ public SemanticVersionBuildMetaData(SemanticVersionBuildMetaData buildMetaData)
this.VersionSourceSha = buildMetaData.VersionSourceSha;
this.VersionSourceDistance = buildMetaData.VersionSourceDistance;
this.UncommittedChanges = buildMetaData.UncommittedChanges;
this.VersionSourceIncrement = buildMetaData.VersionSourceIncrement;
}

public override bool Equals(object? obj) => Equals(obj as SemanticVersionBuildMetaData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
1 change: 1 addition & 0 deletions src/GitVersion.Core/VersionCalculation/VariableProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -98,7 +98,13 @@ public virtual SemanticVersion FindVersion()
};
}

return semanticVersion;
return new SemanticVersion(semanticVersion)
{
BuildMetaData = new SemanticVersionBuildMetaData(semanticVersion.BuildMetaData)
{
VersionSourceIncrement = versionSourceIncrement
}
};
}

private bool TryGetSemanticVersion(
Expand Down Expand Up @@ -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)
Comment thread
arturcic marked this conversation as resolved.
{
var nextVersions = GetNextVersions(branch, configuration);
log.Separator();
Expand Down Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions src/GitVersion.MsBuild/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions src/GitVersion.MsBuild/Tasks/GetVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
<Output TaskParameter="ShortSha" PropertyName="GitVersion_ShortSha" />
<Output TaskParameter="UncommittedChanges" PropertyName="GitVersion_UncommittedChanges" />
<Output TaskParameter="VersionSourceDistance" PropertyName="GitVersion_VersionSourceDistance" />
<Output TaskParameter="VersionSourceIncrement" PropertyName="GitVersion_VersionSourceIncrement" />
<Output TaskParameter="VersionSourceSemVer" PropertyName="GitVersion_VersionSourceSemVer" />
<Output TaskParameter="VersionSourceSha" PropertyName="GitVersion_VersionSourceSha" />
<Output TaskParameter="WeightedPreReleaseNumber" PropertyName="GitVersion_WeightedPreReleaseNumber" />
Expand Down Expand Up @@ -105,6 +106,7 @@
<DefineConstants Condition=" '$(GitVersion_ShortSha)' != '' ">GitVersion_ShortSha=$(GitVersion_ShortSha);$(DefineConstants)</DefineConstants>
<DefineConstants Condition=" '$(GitVersion_UncommittedChanges)' != '' ">GitVersion_UncommittedChanges=$(GitVersion_UncommittedChanges);$(DefineConstants)</DefineConstants>
<DefineConstants Condition=" '$(GitVersion_VersionSourceDistance)' != '' ">GitVersion_VersionSourceDistance=$(GitVersion_VersionSourceDistance);$(DefineConstants)</DefineConstants>
<DefineConstants Condition=" '$(GitVersion_VersionSourceIncrement)' != '' ">GitVersion_VersionSourceIncrement=$(GitVersion_VersionSourceIncrement);$(DefineConstants)</DefineConstants>
<DefineConstants Condition=" '$(GitVersion_VersionSourceSemVer)' != '' ">GitVersion_VersionSourceSemVer=$(GitVersion_VersionSourceSemVer);$(DefineConstants)</DefineConstants>
<DefineConstants Condition=" '$(GitVersion_VersionSourceSha)' != '' ">GitVersion_VersionSourceSha=$(GitVersion_VersionSourceSha);$(DefineConstants)</DefineConstants>
<DefineConstants Condition=" '$(GitVersion_WeightedPreReleaseNumber)' != '' ">GitVersion_WeightedPreReleaseNumber=$(GitVersion_WeightedPreReleaseNumber);$(DefineConstants)</DefineConstants>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<?define ShortSha="commitShortSha"?>
<?define UncommittedChanges="0"?>
<?define VersionSourceDistance="5"?>
<?define VersionSourceIncrement="None"?>
<?define VersionSourceSemVer=""?>
<?define VersionSourceSha="versionSourceSha"?>
<?define WeightedPreReleaseNumber="0"?>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<?define ShortSha="commitShortSha"?>
<?define UncommittedChanges="0"?>
<?define VersionSourceDistance="5"?>
<?define VersionSourceIncrement="None"?>
<?define VersionSourceSemVer=""?>
<?define VersionSourceSha="versionSourceSha"?>
<?define WeightedPreReleaseNumber="0"?>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Loading
Loading