Skip to content

Commit 879c2de

Browse files
committed
Merge pull request #172 from JakeGinnivan/MergeMessageBugFix
Fixed pull request can bump version
2 parents 102697b + 60e15df commit 879c2de

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

GitVersionCore/MergeMessageParser.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace GitVersion
22
{
33
using System.Linq;
4+
using System.Text.RegularExpressions;
45
using LibGit2Sharp;
56

67
class MergeMessageParser
@@ -33,6 +34,19 @@ public static bool TryParse(Commit mergeCommit, out string versionPart)
3334
{
3435
trimmed = message.Replace("Merge branch 'release/", "");
3536
}
37+
else if (Regex.IsMatch(message, "Merge pull request #\\d+ from "))
38+
{
39+
var branch = Regex.Match(message, "from (?<branch>.*)").Groups["branch"].Value;
40+
var lastBranchPart = branch.Split('/', '-').Last();
41+
42+
if (!char.IsNumber(lastBranchPart.First()))
43+
{
44+
return false;
45+
}
46+
47+
versionPart = lastBranchPart;
48+
return true;
49+
}
3650
else if (message.StartsWith("Merge branch '"))
3751
{
3852
trimmed = message.Replace("Merge branch '", "");

Tests/MergeMessageParserTests.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using GitVersion;
33
using LibGit2Sharp;
44
using NUnit.Framework;
5+
using Shouldly;
56

67
[TestFixture]
78
public class MergeMessageParserTests
@@ -17,6 +18,7 @@ public class MergeMessageParserTests
1718
[TestCase("Merge branch 'hotfix-0.1.5'\n", true, "0.1.5")]
1819
[TestCase("Merge branch 'hotfix-0.1.5'\n\nRelates to: TicketId", true, "0.1.5")]
1920
[TestCase("Merge branch 'alpha-0.1.5'", true, "0.1.5")]
21+
[TestCase("Merge pull request #165 from Particular/release-1.0.0", true, "1.0.0")]
2022
public void AssertMergeMessage(string message, bool isMergeCommit, string expectedVersion)
2123
{
2224
var c = new MockCommit
@@ -30,12 +32,12 @@ public void AssertMergeMessage(string message, bool isMergeCommit, string expect
3032

3133
if (expectedVersion == null)
3234
{
33-
Assert.IsFalse(parsed);
35+
parsed.ShouldBe(false);
3436
}
3537
else
3638
{
37-
Assert.IsTrue(parsed);
38-
Assert.AreEqual(expectedVersion, versionPart);
39+
parsed.ShouldBe(true);
40+
versionPart.ShouldBe(expectedVersion);
3941
}
4042
}
4143
}

0 commit comments

Comments
 (0)