@@ -43,15 +43,9 @@ public SemanticVersion FindVersion(GitVersionContext context)
4343 }
4444
4545 var baseVersion = baseVersionFinder . GetBaseVersion ( context ) ;
46- var semver = baseVersion . SemanticVersion ;
47- if ( context . Configuration . VersioningMode == VersioningMode . Mainline )
48- {
49- semver = FindMainlineModeVersion ( baseVersion , context ) ;
50- }
51- else
52- {
53- semver = PerformIncrement ( context , baseVersion , semver ) ;
54- }
46+ var semver = context . Configuration . VersioningMode == VersioningMode . Mainline ?
47+ FindMainlineModeVersion ( baseVersion , context ) :
48+ PerformIncrement ( context , baseVersion ) ;
5549
5650 if ( ! semver . PreReleaseTag . HasTag ( ) && ! string . IsNullOrEmpty ( context . Configuration . Tag ) )
5751 {
@@ -69,8 +63,9 @@ public SemanticVersion FindVersion(GitVersionContext context)
6963 return taggedSemanticVersion ?? semver ;
7064 }
7165
72- private static SemanticVersion PerformIncrement ( GitVersionContext context , BaseVersion baseVersion , SemanticVersion semver )
66+ private static SemanticVersion PerformIncrement ( GitVersionContext context , BaseVersion baseVersion )
7367 {
68+ var semver = baseVersion . SemanticVersion ;
7469 var increment = IncrementStrategyFinder . DetermineIncrementedField ( context , baseVersion ) ;
7570 if ( increment != null )
7671 {
@@ -102,35 +97,36 @@ private SemanticVersion FindMainlineModeVersion(BaseVersion baseVersion, GitVers
10297 Logger . WriteInfo ( string . Format ( "Found {0} merge commits to evaluate increments for.." , mergeCommits . Count ) ) ;
10398
10499 var mainlineVersion = mergeCommits
105- . Select ( mc =>
100+ . Select ( mergeCommit =>
106101 {
107- var mergedHead = GetMergedHead ( mc ) ;
108- var findMergeBase = context . Repository . ObjectDatabase . FindMergeBase ( mc . Parents . First ( ) , mergedHead ) ;
109- return FindMessageIncrement ( context , mergedHead , findMergeBase ) ;
102+ var mergedHead = GetMergedHead ( mergeCommit ) ;
103+ var findMergeBase = context . Repository . ObjectDatabase . FindMergeBase ( mergeCommit . Parents . First ( ) , mergedHead ) ;
104+ return FindMessageIncrement ( context , mergeCommit , mergedHead , findMergeBase ) ;
110105 } )
111106 . Aggregate ( baseVersion . SemanticVersion , ( v , i ) => v . IncrementVersion ( i ) ) ;
112107
113108 if ( context . CurrentBranch . FriendlyName != "master" )
114109 {
115110 var mergedHead = context . CurrentCommit ;
116111 var findMergeBase = context . Repository . FindBranch ( "master" ) . Tip ;
117- var branchIncrement = FindMessageIncrement ( context , mergedHead , findMergeBase ) ;
112+ var branchIncrement = FindMessageIncrement ( context , findMergeBase , mergedHead , findMergeBase ) ;
118113 Logger . WriteInfo ( string . Format ( "Performing {0} increment for current branch " , branchIncrement ) ) ;
119114 mainlineVersion = mainlineVersion . IncrementVersion ( branchIncrement ) ;
120115 }
121116 return mainlineVersion ;
122117 }
123118 }
124119
125- private static VersionField FindMessageIncrement ( GitVersionContext context , Commit mergedHead , Commit findMergeBase )
120+ private static VersionField FindMessageIncrement ( GitVersionContext context , Commit mergeCommit , Commit mergedHead , Commit findMergeBase )
126121 {
127122 var filter = new CommitFilter
128123 {
129124 IncludeReachableFrom = mergedHead ,
130125 ExcludeReachableFrom = findMergeBase
131126 } ;
132127 var commits = context . Repository . Commits . QueryBy ( filter ) . ToList ( ) ;
133- return IncrementStrategyFinder . GetIncrementForCommits ( context , commits ) ?? VersionField . Patch ;
128+ // Need to include merge commit in increment cal
129+ return IncrementStrategyFinder . GetIncrementForCommits ( context , new [ ] { mergeCommit } . Union ( commits ) ) ?? VersionField . Patch ;
134130 }
135131
136132 private Commit GetMergedHead ( Commit mergeCommit )
0 commit comments