Skip to content

Commit c96b55b

Browse files
author
Johannes Egger
committed
Simplify the merge version parsing code
1 parent cdae6dc commit c96b55b

File tree

1 file changed

+9
-60
lines changed

1 file changed

+9
-60
lines changed

GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs

Lines changed: 9 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -48,69 +48,18 @@ static bool Inner(Commit mergeCommit, out string versionPart)
4848
return false;
4949
}
5050

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-
if (message.StartsWith("Merge tag '"))
59-
{
60-
var suffix = message.Replace("Merge tag '", "");
61-
62-
if (suffix.Contains("-"))
63-
{
64-
suffix = suffix.Split('-')[1];
65-
}
66-
return TryGetPrefix(suffix, out versionPart, "'");
67-
}
68-
69-
{
70-
var suffix = message.Substring(prefix.Length);
71-
return TryGetPrefix(suffix, out versionPart, "'");
72-
}
73-
}
74-
75-
if (message.StartsWith("Merge branch '"))
76-
{
77-
var suffix = message.Replace("Merge branch '", "");
78-
79-
if (suffix.Contains("-"))
51+
var version = mergeCommit
52+
.Message.Split('/', '-', '\'', '"', ' ')
53+
.Select(part =>
8054
{
81-
suffix = suffix.Split('-')[1];
82-
}
83-
return TryGetPrefix(suffix, out versionPart, "'");
84-
}
85-
86-
if (message.StartsWith("Merge pull request #"))
87-
{
88-
var split = message.Split(new[]
89-
{
90-
"/"
91-
}, StringSplitOptions.RemoveEmptyEntries);
92-
if (split.Length != 2)
93-
{
94-
versionPart = null;
95-
return false;
96-
}
97-
return TryGetSuffix(split[1], out versionPart, "-");
98-
}
55+
SemanticVersion v;
56+
return SemanticVersion.TryParse(part, "", out v) ? v : null;
57+
}).FirstOrDefault(v => v != null)
58+
;
9959

100-
if (message.StartsWith("Finish Release-")) //Match Syntevo SmartGit client's GitFlow 'release' merge commit message formatting
101-
{
102-
versionPart = message.Replace("Finish Release-", "");
103-
return true;
104-
}
105-
106-
if (message.StartsWith("Finish ")) //Match Syntevo SmartGit client's GitFlow 'hotfix' merge commit message formatting
107-
{
108-
versionPart = message.Replace("Finish ", "");
109-
return true;
110-
}
60+
versionPart = version!=null ? version.ToString() : null;
11161

112-
versionPart = null;
113-
return false;
62+
return versionPart != null;
11463
}
11564

11665
static bool TryGetPrefix(string target, out string result, string splitter)

0 commit comments

Comments
 (0)