Skip to content

Commit 09b656c

Browse files
committed
CR: Use private class for merge message patterns
1 parent c22e1ec commit 09b656c

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

src/GitVersionCore/MergeMessage.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ namespace GitVersion
77
{
88
public class MergeMessage
99
{
10-
private static readonly IList<KeyValuePair<string, Regex>> DefaultPatterns = new List<KeyValuePair<string, Regex>>
10+
private static readonly IList<MergeMessagePattern> DefaultPatterns = new List<MergeMessagePattern>
1111
{
12-
Pattern("Default", @"^Merge (branch|tag) '(?<SourceBranch>[^']*)'(?: into (?<TargetBranch>[^\s]*))*"),
13-
Pattern("SmartGit", @"^Finish (?<SourceBranch>[^\s]*)(?: into (?<TargetBranch>[^\s]*))*"),
14-
Pattern("BitBucketPull", @"^Merge pull request #(?<PullRequestNumber>\d+) (from|in) (?<Source>.*) from (?<SourceBranch>[^\s]*) to (?<TargetBranch>[^\s]*)"),
15-
Pattern("GitHubPull", @"^Merge pull request #(?<PullRequestNumber>\d+) (from|in) (?:(?<SourceBranch>[^\s]*))(?: into (?<TargetBranch>[^\s]*))*"),
16-
Pattern("RemoteTracking", @"^Merge remote-tracking branch '(?<SourceBranch>[^\s]*)'(?: into (?<TargetBranch>[^\s]*))*")
12+
new MergeMessagePattern("Default", @"^Merge (branch|tag) '(?<SourceBranch>[^']*)'(?: into (?<TargetBranch>[^\s]*))*"),
13+
new MergeMessagePattern("SmartGit", @"^Finish (?<SourceBranch>[^\s]*)(?: into (?<TargetBranch>[^\s]*))*"),
14+
new MergeMessagePattern("BitBucketPull", @"^Merge pull request #(?<PullRequestNumber>\d+) (from|in) (?<Source>.*) from (?<SourceBranch>[^\s]*) to (?<TargetBranch>[^\s]*)"),
15+
new MergeMessagePattern("GitHubPull", @"^Merge pull request #(?<PullRequestNumber>\d+) (from|in) (?:(?<SourceBranch>[^\s]*))(?: into (?<TargetBranch>[^\s]*))*"),
16+
new MergeMessagePattern("RemoteTracking", @"^Merge remote-tracking branch '(?<SourceBranch>[^\s]*)'(?: into (?<TargetBranch>[^\s]*))*")
1717
};
1818

1919
public MergeMessage(string mergeMessage, Config config)
@@ -24,15 +24,15 @@ public MergeMessage(string mergeMessage, Config config)
2424
// Concat config messages with the defaults.
2525
// Ensure configs are processed first.
2626
var allPatterns = config.MergeMessageFormats
27-
.Select(x => Pattern(x.Key, x.Value))
27+
.Select(x => new MergeMessagePattern(x.Key, x.Value))
2828
.Concat(DefaultPatterns);
2929

3030
foreach (var pattern in allPatterns)
3131
{
32-
var match = pattern.Value.Match(mergeMessage);
32+
var match = pattern.Format.Match(mergeMessage);
3333
if (match.Success)
3434
{
35-
MatchDefinition = pattern.Key;
35+
MatchDefinition = pattern.DefinitionName;
3636
MergedBranch = match.Groups["SourceBranch"].Value;
3737

3838
if (match.Groups["TargetBranch"].Success)
@@ -76,7 +76,17 @@ private SemanticVersion ParseVersion(string branchName, string tagPrefix)
7676
return null;
7777
}
7878

79-
private static KeyValuePair<string, Regex> Pattern(string name, string format)
80-
=> new KeyValuePair<string, Regex>(name, new Regex(format, RegexOptions.IgnoreCase | RegexOptions.Compiled));
79+
private class MergeMessagePattern
80+
{
81+
public MergeMessagePattern(string name, string format)
82+
{
83+
DefinitionName = name;
84+
Format = new Regex(format, RegexOptions.IgnoreCase | RegexOptions.Compiled);
85+
}
86+
87+
public string DefinitionName { get; }
88+
89+
public Regex Format { get; }
90+
}
8191
}
8292
}

0 commit comments

Comments
 (0)