diff --git a/src/GitVersionCore.Tests/MergeMessageTests.cs b/src/GitVersionCore.Tests/MergeMessageTests.cs index 476475016a..7182ff4354 100644 --- a/src/GitVersionCore.Tests/MergeMessageTests.cs +++ b/src/GitVersionCore.Tests/MergeMessageTests.cs @@ -150,6 +150,34 @@ public void ParsesBitBucketPullMergeMessage( sut.Version.ShouldBe(expectedVersion); } + private static readonly object[] BitBucketPullMergeMessagesv7 = + { + new object[] { @"Pull request #68: Release/2.2 + +Merge in aaa/777 from release/2.2 to master + +* commit '750aa37753dec1a85b22cc16db851187649d9e97':", "release/2.2", "master", new SemanticVersion(2,2,0), 68 } + }; + + [TestCaseSource(nameof(BitBucketPullMergeMessagesv7))] + public void ParsesBitBucketPullMergeMessagev7( + string message, + string expectedMergedBranch, + string expectedTargetBranch, + SemanticVersion expectedVersion, + int? expectedPullRequestNumber) + { + // Act + var sut = new MergeMessage(message, config); + + // Assert + sut.FormatName.ShouldBe("BitBucketPullv7"); + sut.TargetBranch.ShouldBe(expectedTargetBranch); + sut.MergedBranch.ShouldBe(expectedMergedBranch); + sut.IsMergedPullRequest.ShouldBeTrue(); + sut.PullRequestNumber.ShouldBe(expectedPullRequestNumber); + sut.Version.ShouldBe(expectedVersion); + } private static readonly object[] SmartGitMergeMessages = { diff --git a/src/GitVersionCore/MergeMessage.cs b/src/GitVersionCore/MergeMessage.cs index 47a59302ad..709682dee6 100644 --- a/src/GitVersionCore/MergeMessage.cs +++ b/src/GitVersionCore/MergeMessage.cs @@ -13,6 +13,7 @@ public class MergeMessage new MergeMessageFormat("Default", @"^Merge (branch|tag) '(?[^']*)'(?: into (?[^\s]*))*"), new MergeMessageFormat("SmartGit", @"^Finish (?[^\s]*)(?: into (?[^\s]*))*"), new MergeMessageFormat("BitBucketPull", @"^Merge pull request #(?\d+) (from|in) (?.*) from (?[^\s]*) to (?[^\s]*)"), + new MergeMessageFormat("BitBucketPullv7", @"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)"), new MergeMessageFormat("GitHubPull", @"^Merge pull request #(?\d+) (from|in) (?:(?[^\s]*))(?: into (?[^\s]*))*"), new MergeMessageFormat("RemoteTracking", @"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*") };