Skip to content

Commit d05f1b3

Browse files
committed
Added tag-prefix configuration option
1 parent c5f44a1 commit d05f1b3

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

GitVersionCore.Tests/IntegrationTests/GitHubFlow/MasterTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,4 +136,30 @@ public void GivenARepositoryWithTagAndOldNextVersionTxtFileAndNoCommits_VersionS
136136
fixture.AssertFullSemver("1.1.0+0");
137137
}
138138
}
139+
140+
[Test]
141+
public void CanSpecifyTagPrefixes()
142+
{
143+
using (var fixture = new EmptyRepositoryFixture(new Config{ TagPrefix = "version-"}))
144+
{
145+
const string TaggedVersion = "version-1.0.3";
146+
fixture.Repository.MakeATaggedCommit(TaggedVersion);
147+
fixture.Repository.MakeCommits(5);
148+
149+
fixture.AssertFullSemver("1.0.4+5");
150+
}
151+
}
152+
153+
[Test]
154+
public void CanSpecifyTagPrefixesAsRegex()
155+
{
156+
using (var fixture = new EmptyRepositoryFixture(new Config{ TagPrefix = "[version-|v]"}))
157+
{
158+
const string TaggedVersion = "v1.0.3";
159+
fixture.Repository.MakeATaggedCommit(TaggedVersion);
160+
fixture.Repository.MakeCommits(5);
161+
162+
fixture.AssertFullSemver("1.0.4+5");
163+
}
164+
}
139165
}

GitVersionCore/Configuration/Config.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public Config()
99
AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch;
1010
DevelopBranchTag = "unstable";
1111
ReleaseBranchTag = "beta";
12+
TagPrefix = "v";
1213
}
1314

1415
public AssemblyVersioningScheme AssemblyVersioningScheme { get; set; }
@@ -18,5 +19,8 @@ public Config()
1819

1920
[YamlAlias("release-branch-tag")]
2021
public string ReleaseBranchTag { get; set; }
22+
23+
[YamlAlias("tag-prefix")]
24+
public string TagPrefix { get; set; }
2125
}
2226
}

GitVersionCore/GitHubFlow/LastTaggedReleaseFinder.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
namespace GitVersion
22
{
3+
using System;
34
using System.Linq;
5+
using System.Text.RegularExpressions;
46
using LibGit2Sharp;
57

68
public class LastTaggedReleaseFinder
@@ -16,8 +18,9 @@ public bool GetVersion(out VersionTaggedCommit versionTaggedCommit)
1618
{
1719
var tags = context.Repository.Tags.Select(t =>
1820
{
21+
var match = Regex.Match(t.Name, string.Format("({0})?(?<version>.*)", context.Configuration.TagPrefix));
1922
SemanticVersion version;
20-
if (SemanticVersion.TryParse(t.Name.TrimStart('v'), out version))
23+
if (SemanticVersion.TryParse(match.Groups["version"].Value, out version))
2124
{
2225
return new VersionTaggedCommit((Commit)t.Target, version);
2326
}

0 commit comments

Comments
 (0)