Skip to content

Commit a0a6cc4

Browse files
authored
Merge pull request #1591 from asbjornu/feature/tfs-merge-messages
Support for Team Foundation Server merge messages
2 parents 371a896 + f298cb3 commit a0a6cc4

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public void ShouldNotAllowIncrementOfVersion()
4747
[TestCase("Merge branch 'Release-v2.2'", true, "2.2.0")]
4848
[TestCase("Merge remote-tracking branch 'origin/release/0.8.0' into develop/master", true, "0.8.0")]
4949
[TestCase("Merge remote-tracking branch 'refs/remotes/origin/release/2.0.0'", true, "2.0.0")]
50+
[TestCase("Merge release/5.1.0 to master", true, "5.1.0")] // Team Foundation Server 2017 default merge message (en-US)
51+
[TestCase("Zusammengeführter PR \"9\": release/5.1.0 mit master mergen", true, "5.1.0")] // Team Foundation Server 2017 default merge message (de-DE)
5052
public void TakesVersionFromMergeOfReleaseBranch(string message, bool isMergeCommit, string expectedVersion)
5153
{
5254
var parents = GetParents(isMergeCommit);

src/GitVersionCore/MergeMessage.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ class MergeMessage
2020
static Regex parseRemoteTrackingMergeMessage = new Regex(
2121
@"^Merge remote-tracking branch '(?<SourceBranch>.*)'( into (?<TargetBranch>.*))?",
2222
RegexOptions.IgnoreCase | RegexOptions.Compiled);
23+
static Regex parseTfsMergeMessageEnglishUS = new Regex(
24+
@"^Merge (?<SourceBranch>.*) to (?<TargetBranch>.*)",
25+
RegexOptions.IgnoreCase | RegexOptions.Compiled);
26+
// Zusammengeführter PR \"9\": release/5.0.1 mit master mergen
27+
static Regex parseTfsMergeMessageGermanDE = new Regex(
28+
@"^Zusammengeführter PR ""(?<PullRequestNumber>\d*)""\: (?<SourceBranch>.*) mit (?<TargetBranch>.*) mergen",
29+
RegexOptions.IgnoreCase | RegexOptions.Compiled);
2330

2431
private string mergeMessage;
2532

@@ -86,12 +93,29 @@ private string ParseBranch()
8693
}
8794

8895
match = parseRemoteTrackingMergeMessage.Match(mergeMessage);
89-
if (match.Success) {
96+
if (match.Success)
97+
{
9098
var from = match.Groups["SourceBranch"].Value;
9199
// TODO We could remove/separate the remote name at this point?
92100
return from;
93101
}
94102

103+
match = parseTfsMergeMessageEnglishUS.Match(mergeMessage);
104+
if (match.Success)
105+
{
106+
IsMergedPullRequest = true;
107+
var from = match.Groups["SourceBranch"].Value;
108+
return from;
109+
}
110+
111+
match = parseTfsMergeMessageGermanDE.Match(mergeMessage);
112+
if (match.Success)
113+
{
114+
IsMergedPullRequest = true;
115+
var from = match.Groups["SourceBranch"].Value;
116+
return from;
117+
}
118+
95119
return "";
96120
}
97121

0 commit comments

Comments
 (0)