Skip to content

Commit 2fca958

Browse files
committed
Merge pull request #397 from orjan/merge-message-parser
[SPIKE] A more strict approach for finding versions in commit messages
2 parents 4d679ff + 1d227e6 commit 2fca958

File tree

2 files changed

+26
-30
lines changed

2 files changed

+26
-30
lines changed

GitVersionCore.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,25 @@ public void AssertMergeMessage(string message, bool isMergeCommit, string expect
6767
AssertMergeMessage(message + "\n ", expectedVersion, parents);
6868
}
6969

70+
[TestCase(@"Merge pull request #1 in FOO/bar from feature/ISSUE-1 to develop
71+
72+
* commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea':
73+
Updated jQuery to v2.1.3")]
74+
[TestCase(@"Merge pull request #45 in BRIKKS/brikks from feature/NOX-68 to develop
75+
76+
* commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea':
77+
Another commit message
78+
Commit message including a IP-number https://10.50.1.1
79+
A commit message")]
80+
[TestCase(@"Merge branch 'release/Sprint_2.0_Holdings_Computed_Balances'")]
81+
public void MergeMessagesThatsNotRelatedToGitVersion(string commitMessage)
82+
{
83+
84+
var parents = GetParents(true);
85+
86+
AssertMergeMessage(commitMessage, null, parents);
87+
}
88+
7089
static void AssertMergeMessage(string message, string expectedVersion, List<Commit> parents)
7190
{
7291
var commit = new MockCommit

GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
namespace GitVersion.VersionCalculation.BaseVersionCalculators
22
{
3-
using System;
43
using System.Linq;
4+
using System.Text.RegularExpressions;
55
using LibGit2Sharp;
66

77
public class MergeMessageBaseVersionStrategy : BaseVersionStrategy
@@ -42,39 +42,16 @@ private static SemanticVersion Inner(Commit mergeCommit, EffectiveConfiguration
4242
return null;
4343
}
4444

45-
return mergeCommit
46-
.Message.Split('/', '-', '\'', '"', ' ')
45+
var possibleVersions = Regex.Matches(mergeCommit.Message, @"^.*?(-|/|'|Finish )(?<PossibleVersions>\d+\.\d+\.\d+)")
46+
.Cast<Match>()
47+
.Select(m => m.Groups["PossibleVersions"].Value);
48+
49+
return possibleVersions
4750
.Select(part =>
4851
{
4952
SemanticVersion v;
5053
return SemanticVersion.TryParse(part, configuration.GitTagPrefix, out v) ? v : null;
51-
}).FirstOrDefault(v => v != null)
52-
;
53-
54-
}
55-
56-
static bool TryGetPrefix(string target, out string result, string splitter)
57-
{
58-
var indexOf = target.IndexOf(splitter, StringComparison.Ordinal);
59-
if (indexOf == -1)
60-
{
61-
result = null;
62-
return false;
63-
}
64-
result = target.Substring(0, indexOf);
65-
return true;
66-
}
67-
68-
static bool TryGetSuffix(string target, out string result, string splitter)
69-
{
70-
var indexOf = target.IndexOf(splitter, StringComparison.Ordinal);
71-
if (indexOf == -1)
72-
{
73-
result = null;
74-
return false;
75-
}
76-
result = target.Substring(indexOf + 1, target.Length - indexOf - 1);
77-
return true;
54+
}).FirstOrDefault(v => v != null);
7855
}
7956
}
8057
}

0 commit comments

Comments
 (0)