Skip to content

Commit 831ca6e

Browse files
authored
Merge pull request #1375 from Dobriy33/feature/support-for-bitbucket-pr-merge-message
Support for bitbucket pull request merge message
2 parents c533986 + f271821 commit 831ca6e

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

src/GitVersionCore.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ public void ShouldNotAllowIncrementOfVersion()
5454
[TestCase("Merge pull request #95 in Particular/issue-94", true, null)]
5555
[TestCase("Merge pull request #95 in Particular/issue-94", false, null)]
5656
[TestCase("Merge pull request #64 from arledesma/feature-VS2013_3rd_party_test_framework_support", true, null)]
57+
[TestCase("Merge pull request #500 in FOO/bar from Particular/release-1.0.0 to develop)", true, "1.0.0")]
58+
[TestCase("Merge pull request #500 in FOO/bar from feature/new-service to develop)", true, null)]
5759
[TestCase("Finish Release-0.12.0", true, "0.12.0")] //Support Syntevo SmartGit/Hg's Gitflow merge commit messages for finishing a 'Release' branch
5860
[TestCase("Finish 0.14.1", true, "0.14.1")] //Support Syntevo SmartGit/Hg's Gitflow merge commit messages for finishing a 'Hotfix' branch
5961
[TestCase("Merge branch 'Release-v0.2.0'", true, "0.2.0")]

src/GitVersionCore/MergeMessage.cs

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ class MergeMessage
1212
static Regex parseGitHubPullMergeMessage = new Regex(
1313
@"^Merge pull request #(?<PullRequestNumber>\d*) (from|in) (?<Source>.*)",
1414
RegexOptions.IgnoreCase | RegexOptions.Compiled);
15+
static Regex parseBitBucketPullMergeMessage = new Regex(
16+
@"^Merge pull request #(?<PullRequestNumber>\d*) (from|in) (?<Source>.*) from (?<SourceBranch>.*) to (?<TargetBranch>.*)",
17+
RegexOptions.IgnoreCase | RegexOptions.Compiled);
1518
static Regex smartGitMergeMessage = new Regex(
1619
@"^Finish (?<Branch>.*)",
1720
RegexOptions.IgnoreCase | RegexOptions.Compiled);
@@ -67,15 +70,19 @@ private string ParseBranch()
6770
return match.Groups["Branch"].Value;
6871
}
6972

73+
match = parseBitBucketPullMergeMessage.Match(mergeMessage);
74+
if (match.Success)
75+
{
76+
IsMergedPullRequest = true;
77+
PullRequestNumber = GetPullRequestNumber(match);
78+
return match.Groups["SourceBranch"].Value;
79+
}
80+
7081
match = parseGitHubPullMergeMessage.Match(mergeMessage);
7182
if (match.Success)
7283
{
7384
IsMergedPullRequest = true;
74-
int pullNumber;
75-
if (int.TryParse(match.Groups["PullRequestNumber"].Value, out pullNumber))
76-
{
77-
PullRequestNumber = pullNumber;
78-
}
85+
PullRequestNumber = GetPullRequestNumber(match);
7986
var from = match.Groups["Source"].Value;
8087
// TODO We could remove/separate the remote name at this point?
8188
return from;
@@ -91,6 +98,16 @@ private string ParseBranch()
9198
return "";
9299
}
93100

101+
private int GetPullRequestNumber(Match match)
102+
{
103+
int pullNumber;
104+
if (int.TryParse(match.Groups["PullRequestNumber"].Value, out pullNumber))
105+
{
106+
PullRequestNumber = pullNumber;
107+
}
108+
return pullNumber;
109+
}
110+
94111
public string TargetBranch { get; }
95112
public string MergedBranch { get; }
96113
public bool IsMergedPullRequest { get; private set; }

0 commit comments

Comments
 (0)