diff --git a/src/GitVersionCore.Tests/InformationalVersionBuilderTests.cs b/src/GitVersionCore.Tests/InformationalVersionBuilderTests.cs index 60c2338e2a..5f8022f5d3 100644 --- a/src/GitVersionCore.Tests/InformationalVersionBuilderTests.cs +++ b/src/GitVersionCore.Tests/InformationalVersionBuilderTests.cs @@ -17,6 +17,8 @@ public class InformationalVersionBuilderTests : TestBase [TestCase("myPullRequest", "a682956dc1a2752aa24597a0f5cd939f93614509", "a682956d", 1, 2, 3, "unstable3", null, null, "1.2.3-unstable.3+Branch.myPullRequest.Sha.a682956dc1a2752aa24597a0f5cd939f93614509")] [TestCase("release-1.2", "a682956dc1a2752aa24597a0f5cd939f93614509", "a682956d", 1, 2, 0, "beta2", null, null, "1.2.0-beta.2+Branch.release-1.2.Sha.a682956dc1a2752aa24597a0f5cd939f93614509")] [TestCase("release-1.2", "a682956dc1a2752aa24597a0f5cd939f93614509", "a682956d", 1, 2, 0, "alpha2", null, null, "1.2.0-alpha.2+Branch.release-1.2.Sha.a682956dc1a2752aa24597a0f5cd939f93614509")] + [TestCase("release/1.2", "a682956dc1a2752aa24597a0f5cd939f93614509", "a682956d", 1, 2, 0, "beta2", null, null, "1.2.0-beta.2+Branch.release-1.2.Sha.a682956dc1a2752aa24597a0f5cd939f93614509")] + [TestCase("release/1.2", "a682956dc1a2752aa24597a0f5cd939f93614509", "a682956d", 1, 2, 0, "alpha2", null, null, "1.2.0-alpha.2+Branch.release-1.2.Sha.a682956dc1a2752aa24597a0f5cd939f93614509")] public void ValidateInformationalVersionBuilder(string branchName, string sha, string shortSha, int major, int minor, int patch, string tag, string versionSourceSha, int? commitsSinceTag, string versionString) { diff --git a/src/GitVersionCore/SemanticVersionBuildMetaData.cs b/src/GitVersionCore/SemanticVersionBuildMetaData.cs index ee5b3f96f9..d4f4733cf6 100644 --- a/src/GitVersionCore/SemanticVersionBuildMetaData.cs +++ b/src/GitVersionCore/SemanticVersionBuildMetaData.cs @@ -117,9 +117,9 @@ public string ToString(string format, IFormatProvider formatProvider = null) return string.Format( "{0}{1}{2}{3}", CommitsSinceTag, - string.IsNullOrEmpty(Branch) ? null : ".Branch." + Branch, + string.IsNullOrEmpty(Branch) ? null : ".Branch." + FormatMetaDataPart(Branch), string.IsNullOrEmpty(Sha) ? null : ".Sha." + Sha, - string.IsNullOrEmpty(OtherMetaData) ? null : "." + OtherMetaData) + string.IsNullOrEmpty(OtherMetaData) ? null : "." + FormatMetaDataPart(OtherMetaData)) .TrimStart('.'); default: throw new ArgumentException("Unrecognised format", "format"); @@ -171,5 +171,12 @@ public static SemanticVersionBuildMetaData Parse(string buildMetaData) return semanticVersionBuildMetaData; } + + private string FormatMetaDataPart(string value) + { + if(!string.IsNullOrEmpty(value)) + value = Regex.Replace(value, "[^0-9A-Za-z-.]", "-"); + return value; + } } }