Skip to content

Commit 9a2cf14

Browse files
committed
Enable direct commits on master which do not increment SemVer
1 parent 9d591df commit 9a2cf14

File tree

7 files changed

+19
-4
lines changed

7 files changed

+19
-4
lines changed

src/GitVersionCore.Tests/IntegrationTests/MainlineDevelopmentMode.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ public void MergedFeatureBranchesToMasterImpliesRelease()
7676
// One more direct commit for good measure
7777
fixture.MakeACommit("10 +semver: minor");
7878
fixture.AssertFullSemver(config, "3.3.0+14");
79+
// And we can commit without bumping semver
80+
fixture.MakeACommit("11 +semver: none");
81+
fixture.AssertFullSemver(config, "3.3.0+15");
7982
Console.WriteLine(fixture.SequenceDiagram.GetDiagram());
8083
}
8184
}

src/GitVersionCore.Tests/TestEffectiveConfiguration.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public TestEffectiveConfiguration(
2222
string majorMessage = null,
2323
string minorMessage = null,
2424
string patchMessage = null,
25+
string noBumpMessage = null,
2526
CommitMessageIncrementMode commitMessageMode = CommitMessageIncrementMode.Enabled,
2627
int legacySemVerPadding = 4,
2728
int buildMetaDataPadding = 4,
@@ -32,7 +33,7 @@ public TestEffectiveConfiguration(
3233
base(assemblyVersioningScheme, assemblyInformationalFormat, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch,
3334
branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
3435
trackMergeTarget,
35-
majorMessage, minorMessage, patchMessage,
36+
majorMessage, minorMessage, patchMessage, noBumpMessage,
3637
commitMessageMode, legacySemVerPadding, buildMetaDataPadding, commitsSinceVersionSourcePadding,
3738
versionFilters ?? Enumerable.Empty<IVersionFilter>(),
3839
isDevelop, isRelease)

src/GitVersionCore/Configuration/Config.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public string NextVersion
5252
[YamlMember(Alias = "patch-version-bump-message")]
5353
public string PatchVersionBumpMessage { get; set; }
5454

55+
[YamlMember(Alias = "no-bump-message")]
56+
public string NoBumpMessage { get; set; }
57+
5558
[YamlMember(Alias = "legacy-semver-padding")]
5659
public int? LegacySemVerPadding { get; set; }
5760

src/GitVersionCore/Configuration/ConfigurationProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public static void ApplyDefaultsTo(Config config)
6262
config.MajorVersionBumpMessage = config.MajorVersionBumpMessage ?? IncrementStrategyFinder.DefaultMajorPattern;
6363
config.MinorVersionBumpMessage = config.MinorVersionBumpMessage ?? IncrementStrategyFinder.DefaultMinorPattern;
6464
config.PatchVersionBumpMessage = config.PatchVersionBumpMessage ?? IncrementStrategyFinder.DefaultPatchPattern;
65+
config.NoBumpMessage = config.NoBumpMessage ?? IncrementStrategyFinder.DefaultNoBumpPattern;
6566
config.CommitMessageIncrementing = config.CommitMessageIncrementing ?? CommitMessageIncrementMode.Enabled;
6667
config.LegacySemVerPadding = config.LegacySemVerPadding ?? 4;
6768
config.BuildMetaDataPadding = config.BuildMetaDataPadding ?? 4;

src/GitVersionCore/EffectiveConfiguration.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public EffectiveConfiguration(
2121
string majorVersionBumpMessage,
2222
string minorVersionBumpMessage,
2323
string patchVersionBumpMessage,
24+
string noBumpMessage,
2425
CommitMessageIncrementMode commitMessageIncrementing,
2526
int legacySemVerPaddding,
2627
int buildMetaDataPadding,
@@ -44,6 +45,7 @@ public EffectiveConfiguration(
4445
MajorVersionBumpMessage = majorVersionBumpMessage;
4546
MinorVersionBumpMessage = minorVersionBumpMessage;
4647
PatchVersionBumpMessage = patchVersionBumpMessage;
48+
NoBumpMessage = noBumpMessage;
4749
CommitMessageIncrementing = commitMessageIncrementing;
4850
LegacySemVerPadding = legacySemVerPaddding;
4951
BuildMetaDataPadding = buildMetaDataPadding;
@@ -91,6 +93,7 @@ public EffectiveConfiguration(
9193

9294
public string PatchVersionBumpMessage { get; private set; }
9395

96+
public string NoBumpMessage { get; private set; }
9497
public int LegacySemVerPadding { get; private set; }
9598
public int BuildMetaDataPadding { get; private set; }
9699

src/GitVersionCore/GitVersionContext.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ void CalculateEffectiveConfiguration()
123123
var majorMessage = FullConfiguration.MajorVersionBumpMessage;
124124
var minorMessage = FullConfiguration.MinorVersionBumpMessage;
125125
var patchMessage = FullConfiguration.PatchVersionBumpMessage;
126+
var noBumpMessage = FullConfiguration.NoBumpMessage;
126127

127128
var commitMessageVersionBump = currentBranchConfig.Value.CommitMessageIncrementing ?? FullConfiguration.CommitMessageIncrementing.Value;
128129

@@ -132,7 +133,7 @@ void CalculateEffectiveConfiguration()
132133
preventIncrementForMergedBranchVersion,
133134
tagNumberPattern, FullConfiguration.ContinuousDeploymentFallbackTag,
134135
trackMergeTarget,
135-
majorMessage, minorMessage, patchMessage,
136+
majorMessage, minorMessage, patchMessage, noBumpMessage,
136137
commitMessageVersionBump,
137138
FullConfiguration.LegacySemVerPadding.Value,
138139
FullConfiguration.BuildMetaDataPadding.Value,

src/GitVersionCore/IncrementStrategyFinder.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public static class IncrementStrategyFinder
1919
public const string DefaultMajorPattern = @"\+semver:\s?(breaking|major)";
2020
public const string DefaultMinorPattern = @"\+semver:\s?(feature|minor)";
2121
public const string DefaultPatchPattern = @"\+semver:\s?(fix|patch)";
22+
public const string DefaultNoBumpPattern = @"\+semver:\s?(none|skip)";
2223

2324
public static VersionField? DetermineIncrementedField(GitVersionContext context, BaseVersion baseVersion)
2425
{
@@ -69,9 +70,10 @@ public static class IncrementStrategyFinder
6970
var majorRegex = CreateRegex(context.Configuration.MajorVersionBumpMessage ?? DefaultMajorPattern);
7071
var minorRegex = CreateRegex(context.Configuration.MinorVersionBumpMessage ?? DefaultMinorPattern);
7172
var patchRegex = CreateRegex(context.Configuration.PatchVersionBumpMessage ?? DefaultPatchPattern);
73+
var none = CreateRegex(context.Configuration.NoBumpMessage ?? DefaultNoBumpPattern);
7274

7375
var increments = commits
74-
.Select(c => FindIncrementFromMessage(c.Message, majorRegex, minorRegex, patchRegex))
76+
.Select(c => FindIncrementFromMessage(c.Message, majorRegex, minorRegex, patchRegex, none))
7577
.Where(v => v != null)
7678
.Select(v => v.Value)
7779
.ToList();
@@ -110,11 +112,12 @@ private static IEnumerable<Commit> GetIntermediateCommits(IRepository repo, Comm
110112
}
111113
}
112114

113-
private static VersionField? FindIncrementFromMessage(string message, Regex major, Regex minor, Regex patch)
115+
private static VersionField? FindIncrementFromMessage(string message, Regex major, Regex minor, Regex patch, Regex none)
114116
{
115117
if (major.IsMatch(message)) return VersionField.Major;
116118
if (minor.IsMatch(message)) return VersionField.Minor;
117119
if (patch.IsMatch(message)) return VersionField.Patch;
120+
if (none.IsMatch(message)) return VersionField.None;
118121

119122
return null;
120123
}

0 commit comments

Comments
 (0)