@@ -26,11 +26,12 @@ public class IncrementStrategyFinder : IIncrementStrategyFinder
2626
2727 public IncrementStrategyFinder ( IGitRepository repository ) => this . repository = repository . NotNull ( ) ;
2828
29- public VersionField DetermineIncrementedField ( GitVersionContext context , BaseVersion baseVersion , EffectiveConfiguration configuration )
29+ public VersionField DetermineIncrementedField ( ICommit ? currentCommit , BaseVersion baseVersion , EffectiveConfiguration configuration )
3030 {
31+ baseVersion . NotNull ( ) ;
3132 configuration . NotNull ( ) ;
3233
33- var commitMessageIncrement = FindCommitMessageIncrement ( context , configuration , baseVersion . BaseVersionSource ) ;
34+ var commitMessageIncrement = FindCommitMessageIncrement ( configuration , baseVersion . BaseVersionSource , currentCommit ) ;
3435
3536 var defaultIncrement = configuration . Increment . ToVersionField ( ) ;
3637
@@ -40,12 +41,6 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
4041 return baseVersion . ShouldIncrement ? defaultIncrement : VersionField . None ;
4142 }
4243
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-
4944 // don't increment for less than the branch configuration increment, if the absence of commit messages would have
5045 // still resulted in an increment of configuration.Increment
5146 if ( baseVersion . ShouldIncrement && commitMessageIncrement < defaultIncrement )
@@ -56,12 +51,15 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
5651 return commitMessageIncrement . Value ;
5752 }
5853
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 )
6056 {
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 ) ;
6563
6664 var increments = commits
6765 . Select ( c => GetIncrementFromCommit ( c , majorRegex , minorRegex , patchRegex , none ) )
@@ -73,16 +71,14 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
7371 : null ;
7472 }
7573
76- private VersionField ? FindCommitMessageIncrement ( GitVersionContext context , EffectiveConfiguration configuration , ICommit ? baseCommit )
74+ private VersionField ? FindCommitMessageIncrement ( EffectiveConfiguration configuration , ICommit ? baseCommit , ICommit ? currentCommit )
7775 {
78- if ( baseCommit == null ) return null ;
79-
8076 if ( configuration . CommitMessageIncrementing == CommitMessageIncrementMode . Disabled )
8177 {
8278 return null ;
8379 }
8480
85- var commits = GetIntermediateCommits ( baseCommit , context . CurrentCommit ) ;
81+ var commits = GetIntermediateCommits ( baseCommit , currentCommit ) ;
8682
8783 // consider commit messages since latest tag only (see #3071)
8884 var tags = new HashSet < string ? > ( repository . Tags . Select ( t => t . TargetSha ) ) ;
@@ -96,7 +92,13 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
9692 commits = commits . Where ( c => c . Parents . Count ( ) > 1 ) ;
9793 }
9894
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+ ) ;
100102 }
101103
102104 private static Regex TryGetRegexOrDefault ( string ? messageRegex , Regex defaultRegex ) =>
@@ -108,11 +110,17 @@ private static Regex TryGetRegexOrDefault(string? messageRegex, Regex defaultReg
108110 /// Get the sequence of commits in a repository between a <paramref name="baseCommit"/> (exclusive)
109111 /// and a particular <paramref name="headCommit"/> (inclusive)
110112 /// </summary>
111- private IEnumerable < ICommit > GetIntermediateCommits ( IGitObject baseCommit , ICommit ? headCommit )
113+ private IEnumerable < ICommit > GetIntermediateCommits ( ICommit ? baseCommit , ICommit ? headCommit )
112114 {
113115 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+
116124 var headCommits = GetHeadCommits ( headCommit ) ;
117125 return new ArraySegment < ICommit > ( headCommits , commitAfterBaseIndex , headCommits . Length - commitAfterBaseIndex ) ;
118126 }
0 commit comments