Skip to content

Commit ad59a80

Browse files
committed
only consider origin a remote that can have release branches
1 parent 1a572aa commit ad59a80

File tree

7 files changed

+23
-77
lines changed

7 files changed

+23
-77
lines changed

src/GitVersionCore.Tests/Mocks/MockNetwork.cs

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/GitVersionCore.Tests/Mocks/MockRemote.cs

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/GitVersionCore.Tests/Mocks/MockRemoteCollection.cs

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/GitVersionCore.Tests/Mocks/MockRepository.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
43
using LibGit2Sharp;
54

65
public class MockRepository : IRepository
@@ -11,7 +10,6 @@ public MockRepository()
1110
{
1211
Tags = new MockTagCollection();
1312
Refs = new MockReferenceCollection();
14-
Network = new MockNetwork(new[] { new MockRemote("origin") });
1513
}
1614

1715
public void Dispose()

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ public void ShouldNotAllowIncrementOfVersion()
4242
[TestCase("Merge branch 'release-4.6.6' into support-4.6", true, "4.6.6")]
4343
[TestCase("Merge branch 'release-10.10.50'", true, "10.10.50")]
4444
[TestCase("Merge branch 'release-0.1.5'\n\nRelates to: TicketId", true, "0.1.5")]
45-
[TestCase("Merge pull request #165 from Particular/release-1.0.0", true, "1.0.0")]
46-
[TestCase("Merge pull request #165 in Particular/release-1.0.0", true, "1.0.0")]
47-
[TestCase("Merge pull request #500 in FOO/bar from Particular/release-1.0.0 to develop)", true, "1.0.0")]
4845
[TestCase("Finish Release-0.12.0", true, "0.12.0")] //Support Syntevo SmartGit/Hg's Gitflow merge commit messages for finishing a 'Release' branch
4946
[TestCase("Merge branch 'Release-v0.2.0'", true, "0.2.0")]
5047
[TestCase("Merge branch 'Release-v2.2'", true, "2.2.0")]
@@ -97,6 +94,22 @@ public void ShouldNotTakeVersionFromMergeOfNonReleaseBranch(string message, bool
9794
AssertMergeMessage(message + "\n ", null, parents);
9895
}
9996

97+
[TestCase("Merge pull request #165 from Particular/release-1.0.0", true)]
98+
[TestCase("Merge pull request #165 in Particular/release-1.0.0", true)]
99+
[TestCase("Merge pull request #500 in FOO/bar from Particular/release-1.0.0 to develop)", true)]
100+
public void ShouldNotTakeVersionFromMergeOfReleaseBranchWithRemoteOtherThanOrigin(string message, bool isMergeCommit)
101+
{
102+
var parents = GetParents(isMergeCommit);
103+
AssertMergeMessage(message, null, parents);
104+
AssertMergeMessage(message + " ", null, parents);
105+
AssertMergeMessage(message + "\r ", null, parents);
106+
AssertMergeMessage(message + "\r", null, parents);
107+
AssertMergeMessage(message + "\r\n", null, parents);
108+
AssertMergeMessage(message + "\r\n ", null, parents);
109+
AssertMergeMessage(message + "\n", null, parents);
110+
AssertMergeMessage(message + "\n ", null, parents);
111+
}
112+
100113
[TestCase(@"Merge pull request #1 in FOO/bar from feature/ISSUE-1 to develop
101114
102115
* commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea':

src/GitVersionCore/Extensions/ExtensionMethods.cs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ namespace GitVersion
22
{
33
using System;
44
using System.Collections.Generic;
5-
using System.Linq;
65
using System.Text;
76
using System.Text.RegularExpressions;
87

@@ -39,18 +38,5 @@ public static T OnlyOrDefault<T>(this IEnumerable<T> source)
3938

4039
return default(T);
4140
}
42-
43-
public static string AsBranchNameWithoutRemote(this string branchName, GitVersionContext context)
44-
{
45-
branchName = branchName.RegexReplace("^refs/remotes/", string.Empty, RegexOptions.IgnoreCase);
46-
47-
var remote = context.Repository.Network.Remotes
48-
.Select(r => $"{r.Name}/")
49-
.SingleOrDefault(r => branchName.StartsWith(r, StringComparison.OrdinalIgnoreCase));
50-
51-
return remote != null
52-
? branchName.RegexReplace($"^{remote}", string.Empty, RegexOptions.IgnoreCase)
53-
: branchName;
54-
}
5541
}
56-
}
42+
}

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ namespace GitVersion.VersionCalculation.BaseVersionCalculators
22
{
33
using System.Collections.Generic;
44
using System.Linq;
5-
5+
using System.Text.RegularExpressions;
66
using LibGit2Sharp;
77

88
/// <summary>
@@ -21,7 +21,7 @@ public override IEnumerable<BaseVersion> GetVersions(GitVersionContext context)
2121
{
2222
if (TryParse(c, context, out var mergeMessage) &&
2323
mergeMessage.Version != null &&
24-
context.FullConfiguration.IsReleaseBranch(mergeMessage.MergedBranch.AsBranchNameWithoutRemote(context)))
24+
context.FullConfiguration.IsReleaseBranch(TrimRemote(mergeMessage.MergedBranch)))
2525
{
2626
var shouldIncrement = !context.Configuration.PreventIncrementForMergedBranchVersion;
2727
return new[]
@@ -50,5 +50,9 @@ static MergeMessage Inner(Commit mergeCommit, GitVersionContext context)
5050
var mergeMessage = new MergeMessage(mergeCommit.Message, context.FullConfiguration);
5151
return mergeMessage;
5252
}
53+
54+
static string TrimRemote(string branchName) => branchName
55+
.RegexReplace("^refs/remotes/", string.Empty, RegexOptions.IgnoreCase)
56+
.RegexReplace("^origin/", string.Empty, RegexOptions.IgnoreCase);
5357
}
5458
}

0 commit comments

Comments
 (0)