@@ -31,75 +31,26 @@ public override BaseVersion GetVersion(GitVersionContext context)
3131
3232 static bool TryParse ( Commit mergeCommit , EffectiveConfiguration configuration , out SemanticVersion semanticVersion )
3333 {
34- string versionPart ;
35- if ( Inner ( mergeCommit , out versionPart ) )
36- {
37- return SemanticVersion . TryParse ( versionPart , configuration . GitTagPrefix , out semanticVersion ) ;
38- }
39- semanticVersion = null ;
40- return false ;
34+ semanticVersion = Inner ( mergeCommit , configuration ) ;
35+ return semanticVersion != null ;
4136 }
4237
43- static bool Inner ( Commit mergeCommit , out string versionPart )
38+ private static SemanticVersion Inner ( Commit mergeCommit , EffectiveConfiguration configuration )
4439 {
4540 if ( mergeCommit . Parents . Count ( ) < 2 )
4641 {
47- versionPart = null ;
48- return false ;
49- }
50-
51- var message = mergeCommit . Message . TrimToFirstLine ( ) ;
52-
53- var knownMergePrefixes = new [ ] { "Merge branch 'hotfix-" , "Merge branch 'hotfix/" , "Merge branch 'release-" , "Merge branch 'release/" } ;
54-
55- foreach ( var prefix in knownMergePrefixes )
56- {
57- if ( message . StartsWith ( prefix ) )
58- {
59- var suffix = message . Substring ( prefix . Length ) ;
60- return TryGetPrefix ( suffix , out versionPart , "'" ) ;
61- }
62- }
63-
64- if ( message . StartsWith ( "Merge branch '" ) )
65- {
66- var suffix = message . Replace ( "Merge branch '" , "" ) ;
67-
68- if ( suffix . Contains ( "-" ) )
69- {
70- suffix = suffix . Split ( '-' ) [ 1 ] ;
71- }
72- return TryGetPrefix ( suffix , out versionPart , "'" ) ;
42+ return null ;
7343 }
7444
75- if ( message . StartsWith ( "Merge pull request #" ) )
76- {
77- var split = message . Split ( new [ ]
45+ return mergeCommit
46+ . Message . Split ( '/' , '-' , ' \' ' , '"' , ' ' )
47+ . Select ( part =>
7848 {
79- "/"
80- } , StringSplitOptions . RemoveEmptyEntries ) ;
81- if ( split . Length != 2 )
82- {
83- versionPart = null ;
84- return false ;
85- }
86- return TryGetSuffix ( split [ 1 ] , out versionPart , "-" ) ;
87- }
88-
89- if ( message . StartsWith ( "Finish Release-" ) ) //Match Syntevo SmartGit client's GitFlow 'release' merge commit message formatting
90- {
91- versionPart = message . Replace ( "Finish Release-" , "" ) ;
92- return true ;
93- }
94-
95- if ( message . StartsWith ( "Finish " ) ) //Match Syntevo SmartGit client's GitFlow 'hotfix' merge commit message formatting
96- {
97- versionPart = message . Replace ( "Finish " , "" ) ;
98- return true ;
99- }
49+ SemanticVersion v ;
50+ return SemanticVersion . TryParse ( part , configuration . GitTagPrefix , out v ) ? v : null ;
51+ } ) . FirstOrDefault ( v => v != null )
52+ ;
10053
101- versionPart = null ;
102- return false ;
10354 }
10455
10556 static bool TryGetPrefix ( string target , out string result , string splitter )
0 commit comments