From db7beab257660a09586fdc2efa29ede40ee16e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96rjan=20Sj=C3=B6holm?= Date: Wed, 18 Mar 2015 07:42:00 +0100 Subject: [PATCH 1/2] A more strict approach for finding versions in commit messages * Applied a more strict approach to find version in merge commits * Assume that the version is specified at the first commit message line Fixed #385 --- .../MergeMessageBaseVersionStrategyTests.cs | 19 ++++++++++ .../MergeMessageBaseVersionStrategy.cs | 37 ++++--------------- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/GitVersionCore.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/GitVersionCore.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs index 1e193003d5..02e6594d27 100644 --- a/GitVersionCore.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs +++ b/GitVersionCore.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs @@ -67,6 +67,25 @@ public void AssertMergeMessage(string message, bool isMergeCommit, string expect AssertMergeMessage(message + "\n ", expectedVersion, parents); } + [TestCase(@"Merge pull request #1 in FOO/bar from feature/ISSUE-1 to develop + +* commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea': + Updated jQuery to v2.1.3")] + [TestCase(@"Merge pull request #45 in BRIKKS/brikks from feature/NOX-68 to develop + +* commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea': + Another commit message + Commit message including a IP-number https://10.50.1.1 + A commit message")] + [TestCase(@"Merge branch 'release/Sprint_2.0_Holdings_Computed_Balances'")] + public void MergeMessagesThatsNotRelatedToGitVersion(string commitMessage) + { + + var parents = GetParents(true); + + AssertMergeMessage(commitMessage, null, parents); + } + static void AssertMergeMessage(string message, string expectedVersion, List parents) { var commit = new MockCommit diff --git a/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs b/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs index 54a3a810a3..de6160046e 100644 --- a/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs +++ b/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs @@ -1,7 +1,9 @@ namespace GitVersion.VersionCalculation.BaseVersionCalculators { using System; + using System.Collections.Generic; using System.Linq; + using System.Text.RegularExpressions; using LibGit2Sharp; public class MergeMessageBaseVersionStrategy : BaseVersionStrategy @@ -42,39 +44,16 @@ private static SemanticVersion Inner(Commit mergeCommit, EffectiveConfiguration return null; } - return mergeCommit - .Message.Split('/', '-', '\'', '"', ' ') + var possibleVersions = Regex.Matches(mergeCommit.Message, @"^.*?(-|/|'|Finish )(?\d+\.\d+\.\d+)") + .Cast() + .Select(m => m.Groups["PossibleVersions"].Value); + + return possibleVersions .Select(part => { SemanticVersion v; return SemanticVersion.TryParse(part, configuration.GitTagPrefix, out v) ? v : null; - }).FirstOrDefault(v => v != null) - ; - - } - - static bool TryGetPrefix(string target, out string result, string splitter) - { - var indexOf = target.IndexOf(splitter, StringComparison.Ordinal); - if (indexOf == -1) - { - result = null; - return false; - } - result = target.Substring(0, indexOf); - return true; - } - - static bool TryGetSuffix(string target, out string result, string splitter) - { - var indexOf = target.IndexOf(splitter, StringComparison.Ordinal); - if (indexOf == -1) - { - result = null; - return false; - } - result = target.Substring(indexOf + 1, target.Length - indexOf - 1); - return true; + }).FirstOrDefault(v => v != null); } } } \ No newline at end of file From 1d227e6e68fe5f30047cedecb11483b49d4c975b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96rjan=20Sj=C3=B6holm?= Date: Wed, 18 Mar 2015 22:50:35 +0100 Subject: [PATCH 2/2] Fixed usings --- .../BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs b/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs index de6160046e..28dcc38f56 100644 --- a/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs +++ b/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs @@ -1,7 +1,5 @@ namespace GitVersion.VersionCalculation.BaseVersionCalculators { - using System; - using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using LibGit2Sharp;