Skip to content

Commit a3003ef

Browse files
author
roeil
committed
refactor: add VersionIncrementSourceType to distinguish between version increment strategies
1 parent 1152953 commit a3003ef

11 files changed

+38
-11
lines changed

src/GitVersion.Core/PublicAPI.Shipped.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,6 @@ GitVersion.Settings.OnlyTrackedBranches -> bool
600600
GitVersion.VersionCalculation.BaseVersion
601601
GitVersion.VersionCalculation.BaseVersion.BaseVersion() -> void
602602
GitVersion.VersionCalculation.BaseVersion.BaseVersion(GitVersion.VersionCalculation.BaseVersionOperand! Operand) -> void
603-
GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource = null) -> void
604603
GitVersion.VersionCalculation.BaseVersion.BaseVersionSource.get -> GitVersion.Git.ICommit?
605604
GitVersion.VersionCalculation.BaseVersion.GetIncrementedVersion() -> GitVersion.SemanticVersion!
606605
GitVersion.VersionCalculation.BaseVersion.Operand.get -> GitVersion.VersionCalculation.BaseVersionOperand!
@@ -612,7 +611,6 @@ GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.get -> bool
612611
GitVersion.VersionCalculation.BaseVersion.Source.get -> string!
613612
GitVersion.VersionCalculation.BaseVersionOperand
614613
GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand() -> void
615-
GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! Source, GitVersion.SemanticVersion! SemanticVersion, GitVersion.Git.ICommit? BaseVersionSource = null) -> void
616614
GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.get -> GitVersion.Git.ICommit?
617615
GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.init -> void
618616
GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.get -> GitVersion.SemanticVersion!

src/GitVersion.Core/PublicAPI.Unshipped.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,16 @@ GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersio
33
GitVersion.Configuration.EffectiveConfiguration.VersionFilters.get -> System.Collections.Generic.IEnumerable<GitVersion.VersionCalculation.IVersionFilter!>!
44
GitVersion.Configuration.IIgnoreConfiguration.Paths.get -> System.Collections.Generic.IReadOnlyCollection<string!>!
55
GitVersion.Git.IGitRepository.FindPatchPaths(GitVersion.Git.ICommit! commit, string? tagPrefix) -> System.Collections.Generic.IEnumerable<string!>?
6+
GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource = null, GitVersion.VersionCalculation.VersionIncrementSourceType sourceType = GitVersion.VersionCalculation.VersionIncrementSourceType.Tree) -> void
7+
GitVersion.VersionCalculation.BaseVersion.SourceType.get -> GitVersion.VersionCalculation.VersionIncrementSourceType
8+
GitVersion.VersionCalculation.BaseVersion.SourceType.init -> void
9+
GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! Source, GitVersion.SemanticVersion! SemanticVersion, GitVersion.Git.ICommit? BaseVersionSource = null, GitVersion.VersionCalculation.VersionIncrementSourceType SourceType = GitVersion.VersionCalculation.VersionIncrementSourceType.Tree) -> void
10+
GitVersion.VersionCalculation.BaseVersionOperand.SourceType.get -> GitVersion.VersionCalculation.VersionIncrementSourceType
11+
GitVersion.VersionCalculation.BaseVersionOperand.SourceType.init -> void
12+
GitVersion.VersionCalculation.BaseVersionOperator.SourceType.get -> GitVersion.VersionCalculation.VersionIncrementSourceType
13+
GitVersion.VersionCalculation.IBaseVersionIncrement.SourceType.get -> GitVersion.VersionCalculation.VersionIncrementSourceType
14+
GitVersion.VersionCalculation.VersionIncrementSourceType
15+
GitVersion.VersionCalculation.VersionIncrementSourceType.Fallback = 2 -> GitVersion.VersionCalculation.VersionIncrementSourceType
16+
GitVersion.VersionCalculation.VersionIncrementSourceType.NextVersionConfig = 3 -> GitVersion.VersionCalculation.VersionIncrementSourceType
17+
GitVersion.VersionCalculation.VersionIncrementSourceType.Tag = 1 -> GitVersion.VersionCalculation.VersionIncrementSourceType
18+
GitVersion.VersionCalculation.VersionIncrementSourceType.Tree = 0 -> GitVersion.VersionCalculation.VersionIncrementSourceType

src/GitVersion.Core/VersionCalculation/PathFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public bool Exclude(IBaseVersion baseVersion, out string? reason)
1616
ArgumentNullException.ThrowIfNull(baseVersion);
1717

1818
reason = null;
19-
if (baseVersion.Source.StartsWith("Fallback") || baseVersion.Source.StartsWith("Git tag") || baseVersion.Source.StartsWith("NextVersion")) return false;
19+
if (baseVersion.SourceType != VersionIncrementSourceType.Tree) return false;
2020

2121
return Exclude(baseVersion.BaseVersionSource, out reason);
2222
}

src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ public BaseVersion() : this(new BaseVersionOperand())
1010
{
1111
}
1212

13-
public BaseVersion(string source, SemanticVersion semanticVersion, ICommit? baseVersionSource = null)
14-
: this(new BaseVersionOperand(source, semanticVersion, baseVersionSource))
15-
{
16-
}
13+
public BaseVersion(string source, SemanticVersion semanticVersion, ICommit? baseVersionSource = null, VersionIncrementSourceType sourceType = VersionIncrementSourceType.Tree)
14+
: this(new BaseVersionOperand(source, semanticVersion, baseVersionSource, sourceType)) => this.SourceType = sourceType;
1715

1816
public string Source => (Operator?.Source).IsNullOrEmpty() ? Operand.Source : Operator.Source;
1917

18+
public VersionIncrementSourceType SourceType { get; init; } = VersionIncrementSourceType.Tree;
19+
2020
public SemanticVersion SemanticVersion => Operand.SemanticVersion;
2121

2222
public ICommit? BaseVersionSource => Operator?.BaseVersionSource ?? Operand.BaseVersionSource;

src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace GitVersion.VersionCalculation;
55

6-
public sealed record BaseVersionOperand(string Source, SemanticVersion SemanticVersion, ICommit? BaseVersionSource = null)
6+
public sealed record BaseVersionOperand(string Source, SemanticVersion SemanticVersion, ICommit? BaseVersionSource = null, VersionIncrementSourceType SourceType = VersionIncrementSourceType.Tree)
77
: IBaseVersionIncrement
88
{
99
public BaseVersionOperand() : this(string.Empty, SemanticVersion.Empty)
@@ -12,6 +12,8 @@ public BaseVersionOperand() : this(string.Empty, SemanticVersion.Empty)
1212

1313
public string Source { get; init; } = Source.NotNull();
1414

15+
public VersionIncrementSourceType SourceType { get; init; } = SourceType;
16+
1517
public SemanticVersion SemanticVersion { get; init; } = SemanticVersion.NotNull();
1618

1719
public override string ToString()

src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ public sealed record BaseVersionOperator : IBaseVersionIncrement
66
{
77
public string Source { get; init; } = string.Empty;
88

9+
public VersionIncrementSourceType SourceType { get; } = VersionIncrementSourceType.Tree;
10+
911
public ICommit? BaseVersionSource { get; init; }
1012

1113
public VersionField Increment { get; init; }

src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public IEnumerable<BaseVersion> GetBaseVersions(EffectiveBranchConfiguration con
4242
};
4343
}
4444

45-
yield return new BaseVersion("NextVersion in GitVersion configuration file", semanticVersion)
45+
yield return new BaseVersion("NextVersion in GitVersion configuration file", semanticVersion, sourceType: VersionIncrementSourceType.NextVersionConfig)
4646
{
4747
Operator = operation
4848
};

src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ private IEnumerable<BaseVersion> GetBaseVersionsInternal(EffectiveBranchConfigur
5858
Increment = increment,
5959
ForceIncrement = false,
6060
Label = label
61-
}
61+
},
62+
SourceType = VersionIncrementSourceType.Fallback
6263
};
6364
}
6465
}

src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ public interface IBaseVersionIncrement
66
{
77
string Source { get; }
88

9+
VersionIncrementSourceType SourceType { get; }
10+
911
ICommit? BaseVersionSource { get; }
1012
}

src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ private IEnumerable<BaseVersion> GetBaseVersionsInternal(EffectiveBranchConfigur
7878
semanticVersionTreshold = semanticVersion.Value.Increment(increment, null, forceIncrement: true);
7979

8080
yield return new BaseVersion(
81-
$"Git tag '{semanticVersion.Tag.Name.Friendly}'", semanticVersion.Value, baseVersionSource)
81+
$"Git tag '{semanticVersion.Tag.Name.Friendly}'", semanticVersion.Value, baseVersionSource, VersionIncrementSourceType.Tag)
8282
{
8383
Operator = new BaseVersionOperator
8484
{
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace GitVersion.VersionCalculation;
2+
3+
public enum VersionIncrementSourceType
4+
{
5+
Tree,
6+
Tag,
7+
Fallback,
8+
NextVersionConfig
9+
}

0 commit comments

Comments
 (0)