Skip to content

Commit 37dc0db

Browse files
committed
Don't consider "tag-prefix" as optional if it's explicitly specified
To correctly calculate the next version with the prefix. For example, we develop the main product and some its plugin in the same repository and have the following git tags list: - 0.1.0 - 0.1.1 - 0.2.0 - 0.2.1 - plugin_0.1.0 - plugin_0.1.1 The expected next plugin version is `0.1.2` not `0.2.2` (`plugin_` prefix will be prepended before setting the tag).
1 parent b013d24 commit 37dc0db

File tree

10 files changed

+19
-18
lines changed

10 files changed

+19
-18
lines changed

src/GitVersion.Core.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
assembly-versioning-scheme: MajorMinorPatch
22
assembly-file-versioning-scheme: MajorMinorPatch
33
mode: ContinuousDelivery
4-
tag-prefix: '[vV]'
4+
tag-prefix: '[vV]?'
55
continuous-delivery-fallback-tag: ci
66
major-version-bump-message: '\+semver:\s?(breaking|major)'
77
minor-version-bump-message: '\+semver:\s?(feature|minor)'

src/GitVersion.Core.Tests/Configuration/ConfigProviderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ public void ShouldUseDefaultTagPrefixWhenNotSetInConfigFile()
456456
SetupConfigFileContent(text);
457457
var config = this.configProvider.Provide(this.repoPath);
458458

459-
config.TagPrefix.ShouldBe("[vV]");
459+
config.TagPrefix.ShouldBe(Config.DefaultTagPrefix);
460460
}
461461

462462
[Test]
@@ -486,7 +486,7 @@ public void ShouldNotOverrideDefaultTagPrefixWhenNotSetInOverrideConfig()
486486
SetupConfigFileContent(text);
487487
var config = this.configProvider.Provide(this.repoPath, new Config { TagPrefix = null });
488488

489-
config.TagPrefix.ShouldBe("[vV]");
489+
config.TagPrefix.ShouldBe(Config.DefaultTagPrefix);
490490
}
491491

492492
[Test]

src/GitVersion.Core.Tests/Helpers/TestEffectiveConfiguration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public TestEffectiveConfiguration(
1313
string? assemblyFileVersioningFormat = null,
1414
string? assemblyInformationalFormat = null,
1515
VersioningMode versioningMode = VersioningMode.ContinuousDelivery,
16-
string gitTagPrefix = "v",
16+
string gitTagPrefix = "v?",
1717
string tag = "",
1818
string? nextVersion = null,
1919
string branchPrefixToTrim = "",

src/GitVersion.Core.Tests/Model/MergeMessageTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace GitVersion.Core.Tests;
88
[TestFixture]
99
public class MergeMessageTests : TestBase
1010
{
11-
private readonly Config config = new() { TagPrefix = "[vV]" };
11+
private readonly Config config = new() { TagPrefix = Config.DefaultTagPrefix };
1212

1313
[Test]
1414
public void NullMessageStringThrows() =>

src/GitVersion.Core.Tests/VersionCalculation/SemanticVersionTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public void ValidateVersionParsing(
6666
[TestCase("someText")]
6767
[TestCase("some-T-ext")]
6868
[TestCase("v.1.2.3", "v")]
69+
[TestCase("1.2.3", "v")]
6970
public void ValidateInvalidVersionParsing(string versionString, string? tagPrefixRegex = null) =>
7071
Assert.IsFalse(SemanticVersion.TryParse(versionString, tagPrefixRegex, out _), "TryParse Result");
7172

src/GitVersion.Core.Tests/VersionConverters/AssemblyInfoFileUpdaterTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void ShouldCreateAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo(strin
4040
var workingDir = Path.GetTempPath();
4141
var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension;
4242
var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile);
43-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
43+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);
4444

4545
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
4646
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
@@ -56,7 +56,7 @@ public void ShouldCreateAssemblyInfoFileAtPathWhenNotExistsAndEnsureAssemblyInfo
5656
var workingDir = Path.GetTempPath();
5757
var assemblyInfoFile = PathHelper.Combine("src", "Project", "Properties", $"VersionAssemblyInfo.{fileExtension}");
5858
var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile);
59-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
59+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);
6060

6161
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
6262
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
@@ -75,7 +75,7 @@ public void ShouldCreateAssemblyInfoFilesAtPathWhenNotExistsAndEnsureAssemblyInf
7575
"AssemblyInfo." + fileExtension,
7676
PathHelper.Combine("src", "Project", "Properties", "VersionAssemblyInfo." + fileExtension)
7777
};
78-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
78+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);
7979

8080
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
8181
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFiles.ToArray()));
@@ -95,7 +95,7 @@ public void ShouldNotCreateAssemblyInfoFileWhenNotExistsAndNotEnsureAssemblyInfo
9595
var workingDir = Path.GetTempPath();
9696
var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension;
9797
var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile);
98-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
98+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);
9999

100100
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
101101
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, false, assemblyInfoFile));
@@ -110,7 +110,7 @@ public void ShouldNotCreateAssemblyInfoFileForUnknownSourceCodeAndEnsureAssembly
110110
var workingDir = Path.GetTempPath();
111111
const string assemblyInfoFile = "VersionAssemblyInfo.js";
112112
var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile);
113-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
113+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);
114114

115115
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
116116
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
@@ -124,7 +124,7 @@ public void ShouldStartSearchFromWorkingDirectory()
124124
this.fileSystem = Substitute.For<IFileSystem>();
125125
var workingDir = Path.GetTempPath();
126126
var assemblyInfoFiles = Array.Empty<string>();
127-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
127+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);
128128

129129
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
130130
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, false, assemblyInfoFiles.ToArray()));

src/GitVersion.Core.Tests/VersionConverters/ProjectFileUpdaterTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public void CannotUpdateProjectFileWithoutAPropertyGroup(string xml)
142142
)]
143143
public void UpdateProjectXmlVersionElementWithStandardXmlInsertsElement(string xml)
144144
{
145-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
145+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v?"), new TestEffectiveConfiguration(), false);
146146
var xmlRoot = XElement.Parse(xml);
147147
variables.AssemblySemVer.ShouldNotBeNull();
148148
ProjectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
@@ -169,7 +169,7 @@ public void UpdateProjectXmlVersionElementWithStandardXmlInsertsElement(string x
169169
)]
170170
public void UpdateProjectXmlVersionElementWithStandardXmlModifiesElement(string xml)
171171
{
172-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
172+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v?"), new TestEffectiveConfiguration(), false);
173173
var xmlRoot = XElement.Parse(xml);
174174
variables.AssemblySemVer.ShouldNotBeNull();
175175
ProjectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
@@ -199,7 +199,7 @@ public void UpdateProjectXmlVersionElementWithStandardXmlModifiesElement(string
199199
)]
200200
public void UpdateProjectXmlVersionElementWithDuplicatePropertyGroupsModifiesLastElement(string xml)
201201
{
202-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
202+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v?"), new TestEffectiveConfiguration(), false);
203203
var xmlRoot = XElement.Parse(xml);
204204
variables.AssemblySemVer.ShouldNotBeNull();
205205
ProjectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
@@ -230,7 +230,7 @@ public void UpdateProjectXmlVersionElementWithDuplicatePropertyGroupsModifiesLas
230230
)]
231231
public void UpdateProjectXmlVersionElementWithMultipleVersionElementsLastOneIsModified(string xml)
232232
{
233-
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
233+
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v?"), new TestEffectiveConfiguration(), false);
234234
var xmlRoot = XElement.Parse(xml);
235235
variables.AssemblySemVer.ShouldNotBeNull();
236236
ProjectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);

src/GitVersion.Core/Model/Configuration/Config.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public override string ToString()
9898
return stringBuilder.ToString();
9999
}
100100

101-
public const string DefaultTagPrefix = "[vV]";
101+
public const string DefaultTagPrefix = "[vV]?";
102102
public const string ReleaseBranchRegex = "^releases?[/-]";
103103
public const string FeatureBranchRegex = "^features?[/-]";
104104
public const string PullRequestRegex = @"^(pull|pull\-requests|pr)[/-]";

src/GitVersion.Core/PublicAPI.Shipped.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const GitVersion.BuildAgents.SpaceAutomation.EnvironmentVariableName = "JB_SPACE
2727
const GitVersion.BuildAgents.TeamCity.EnvironmentVariableName = "TEAMCITY_VERSION" -> string!
2828
const GitVersion.BuildAgents.TravisCi.EnvironmentVariableName = "TRAVIS" -> string!
2929
const GitVersion.Configuration.ConfigFileLocator.DefaultFileName = "GitVersion.yml" -> string!
30-
const GitVersion.Model.Configuration.Config.DefaultTagPrefix = "[vV]" -> string!
30+
const GitVersion.Model.Configuration.Config.DefaultTagPrefix = "[vV]?" -> string!
3131
const GitVersion.Model.Configuration.Config.DevelopBranchKey = "develop" -> string!
3232
const GitVersion.Model.Configuration.Config.DevelopBranchRegex = "^dev(elop)?(ment)?$" -> string!
3333
const GitVersion.Model.Configuration.Config.FeatureBranchKey = "feature" -> string!

src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersion.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public static SemanticVersion Parse(string version, string? tagPrefixRegex, Sema
141141

142142
public static bool TryParse(string version, string? tagPrefixRegex, [NotNullWhen(true)] out SemanticVersion? semanticVersion, SemanticVersionFormat format = SemanticVersionFormat.Strict)
143143
{
144-
var match = Regex.Match(version, $"^({tagPrefixRegex})?(?<version>.*)$");
144+
var match = Regex.Match(version, $"^({tagPrefixRegex})(?<version>.*)$");
145145

146146
if (!match.Success)
147147
{

0 commit comments

Comments
 (0)