@@ -26,11 +26,12 @@ public class IncrementStrategyFinder : IIncrementStrategyFinder
26
26
27
27
public IncrementStrategyFinder ( IGitRepository repository ) => this . repository = repository . NotNull ( ) ;
28
28
29
- public VersionField DetermineIncrementedField ( GitVersionContext context , BaseVersion baseVersion , EffectiveConfiguration configuration )
29
+ public VersionField DetermineIncrementedField ( ICommit ? currentCommit , BaseVersion baseVersion , EffectiveConfiguration configuration )
30
30
{
31
+ baseVersion . NotNull ( ) ;
31
32
configuration . NotNull ( ) ;
32
33
33
- var commitMessageIncrement = FindCommitMessageIncrement ( context , configuration , baseVersion . BaseVersionSource ) ;
34
+ var commitMessageIncrement = FindCommitMessageIncrement ( configuration , baseVersion . BaseVersionSource , currentCommit ) ;
34
35
35
36
var defaultIncrement = configuration . Increment . ToVersionField ( ) ;
36
37
@@ -40,12 +41,6 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
40
41
return baseVersion . ShouldIncrement ? defaultIncrement : VersionField . None ;
41
42
}
42
43
43
- // cap the commit message severity to minor for alpha versions
44
- if ( baseVersion . SemanticVersion < new SemanticVersion ( 1 ) && commitMessageIncrement > VersionField . Minor )
45
- {
46
- commitMessageIncrement = VersionField . Minor ;
47
- }
48
-
49
44
// don't increment for less than the branch configuration increment, if the absence of commit messages would have
50
45
// still resulted in an increment of configuration.Increment
51
46
if ( baseVersion . ShouldIncrement && commitMessageIncrement < defaultIncrement )
@@ -56,12 +51,15 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
56
51
return commitMessageIncrement . Value ;
57
52
}
58
53
59
- public VersionField ? GetIncrementForCommits ( IGitVersionConfiguration configuration , IEnumerable < ICommit > commits )
54
+ public VersionField ? GetIncrementForCommits ( string ? majorVersionBumpMessage , string ? minorVersionBumpMessage ,
55
+ string ? patchVersionBumpMessage , string ? noBumpMessage , IEnumerable < ICommit > commits )
60
56
{
61
- var majorRegex = TryGetRegexOrDefault ( configuration . MajorVersionBumpMessage , DefaultMajorPatternRegex ) ;
62
- var minorRegex = TryGetRegexOrDefault ( configuration . MinorVersionBumpMessage , DefaultMinorPatternRegex ) ;
63
- var patchRegex = TryGetRegexOrDefault ( configuration . PatchVersionBumpMessage , DefaultPatchPatternRegex ) ;
64
- var none = TryGetRegexOrDefault ( configuration . NoBumpMessage , DefaultNoBumpPatternRegex ) ;
57
+ commits . NotNull ( ) ;
58
+
59
+ var majorRegex = TryGetRegexOrDefault ( majorVersionBumpMessage , DefaultMajorPatternRegex ) ;
60
+ var minorRegex = TryGetRegexOrDefault ( minorVersionBumpMessage , DefaultMinorPatternRegex ) ;
61
+ var patchRegex = TryGetRegexOrDefault ( patchVersionBumpMessage , DefaultPatchPatternRegex ) ;
62
+ var none = TryGetRegexOrDefault ( noBumpMessage , DefaultNoBumpPatternRegex ) ;
65
63
66
64
var increments = commits
67
65
. Select ( c => GetIncrementFromCommit ( c , majorRegex , minorRegex , patchRegex , none ) )
@@ -73,16 +71,14 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
73
71
: null ;
74
72
}
75
73
76
- private VersionField ? FindCommitMessageIncrement ( GitVersionContext context , EffectiveConfiguration configuration , ICommit ? baseCommit )
74
+ private VersionField ? FindCommitMessageIncrement ( EffectiveConfiguration configuration , ICommit ? baseCommit , ICommit ? currentCommit )
77
75
{
78
- if ( baseCommit == null ) return null ;
79
-
80
76
if ( configuration . CommitMessageIncrementing == CommitMessageIncrementMode . Disabled )
81
77
{
82
78
return null ;
83
79
}
84
80
85
- var commits = GetIntermediateCommits ( baseCommit , context . CurrentCommit ) ;
81
+ var commits = GetIntermediateCommits ( baseCommit , currentCommit ) ;
86
82
87
83
// consider commit messages since latest tag only (see #3071)
88
84
var tags = new HashSet < string ? > ( repository . Tags . Select ( t => t . TargetSha ) ) ;
@@ -96,7 +92,13 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
96
92
commits = commits . Where ( c => c . Parents . Count ( ) > 1 ) ;
97
93
}
98
94
99
- return GetIncrementForCommits ( context . Configuration , commits ) ;
95
+ return GetIncrementForCommits (
96
+ majorVersionBumpMessage : configuration . MajorVersionBumpMessage ,
97
+ minorVersionBumpMessage : configuration . MinorVersionBumpMessage ,
98
+ patchVersionBumpMessage : configuration . PatchVersionBumpMessage ,
99
+ noBumpMessage : configuration . NoBumpMessage ,
100
+ commits : commits
101
+ ) ;
100
102
}
101
103
102
104
private static Regex TryGetRegexOrDefault ( string ? messageRegex , Regex defaultRegex ) =>
@@ -108,11 +110,17 @@ private static Regex TryGetRegexOrDefault(string? messageRegex, Regex defaultReg
108
110
/// Get the sequence of commits in a repository between a <paramref name="baseCommit"/> (exclusive)
109
111
/// and a particular <paramref name="headCommit"/> (inclusive)
110
112
/// </summary>
111
- private IEnumerable < ICommit > GetIntermediateCommits ( IGitObject baseCommit , ICommit ? headCommit )
113
+ private IEnumerable < ICommit > GetIntermediateCommits ( ICommit ? baseCommit , ICommit ? headCommit )
112
114
{
113
115
var map = GetHeadCommitsMap ( headCommit ) ;
114
- if ( ! map . TryGetValue ( baseCommit . Sha , out var baseIndex ) ) return Enumerable . Empty < ICommit > ( ) ;
115
- var commitAfterBaseIndex = baseIndex + 1 ;
116
+
117
+ var commitAfterBaseIndex = 0 ;
118
+ if ( baseCommit != null )
119
+ {
120
+ if ( ! map . TryGetValue ( baseCommit . Sha , out var baseIndex ) ) return Enumerable . Empty < ICommit > ( ) ;
121
+ commitAfterBaseIndex = baseIndex + 1 ;
122
+ }
123
+
116
124
var headCommits = GetHeadCommits ( headCommit ) ;
117
125
return new ArraySegment < ICommit > ( headCommits , commitAfterBaseIndex , headCommits . Length - commitAfterBaseIndex ) ;
118
126
}
0 commit comments