Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/input/docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ next-version: 1.0
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
assembly-informational-format: '{InformationalVersion}'
assembly-informational-is-semver: true
mode: ContinuousDelivery
increment: Inherit
continuous-delivery-fallback-tag: ci
Expand Down Expand Up @@ -116,6 +117,13 @@ Specifies the format of `AssemblyInformationalVersion`.
Follows the same formatting semantics as `assembly-file-versioning-format`.
The default value is `{InformationalVersion}`.

### assembly-informational-is-semver

Controls whether `assembly-file-versioning-format` should follow semantic version allowed char-set or not.
If set to `true` it will replace any special characters by a dash `-`.
If set to `false` it will allow any special characters (unicode characters, spaces and symbols like `#@!?[]()$=-`).
The default value is `true`.

### mode

Sets the `mode` of how GitVersion should create a new version. Read more at
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatch
assembly-informational-is-semver: true
mode: ContinuousDelivery
tag-prefix: '[vV]'
continuous-delivery-fallback-tag: ci
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,10 @@ public TestEffectiveConfiguration(
bool tracksReleaseBranches = false,
bool isRelease = false,
string commitDateFormat = "yyyy-MM-dd",
bool updateBuildNumber = false) :
base(assemblyVersioningScheme, assemblyFileVersioningScheme, assemblyInformationalFormat, assemblyVersioningFormat, assemblyFileVersioningFormat, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch,
bool updateBuildNumber = false,
bool assemblyInformationalIsSemver = true
) :
base(assemblyVersioningScheme, assemblyFileVersioningScheme, assemblyInformationalFormat, assemblyInformationalIsSemver, assemblyVersioningFormat, assemblyFileVersioningFormat, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch,
branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
trackMergeTarget,
majorMessage, minorMessage, patchMessage, noBumpMessage,
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersionCore.Tests/Model/CommitDateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public void CommitDateFormatTest(string format, string expectedOutcome)

},
new EffectiveConfiguration(
AssemblyVersioningScheme.MajorMinorPatch, AssemblyFileVersioningScheme.MajorMinorPatch, "", "", "", VersioningMode.ContinuousDelivery, "", "", "", IncrementStrategy.Inherit,
AssemblyVersioningScheme.MajorMinorPatch, AssemblyFileVersioningScheme.MajorMinorPatch, "", true, "", "", VersioningMode.ContinuousDelivery, "", "", "", IncrementStrategy.Inherit,
"", true, "", "", false, "", "", "", "", CommitMessageIncrementMode.Enabled, 4, 4, 4, Enumerable.Empty<IVersionFilter>(), false, true, format, false, 0, 0)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -306,5 +306,20 @@ public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomA

vars.ToString().ShouldMatchApproved(c => c.SubFolder("Approved"));
}

[Test]
public void ProvidesVariableshWithCustomAssemblyInfoFormatSupportingAnySpecialCharcter()
{
var semVer = new SemanticVersion();
var textWithSpecialCharacters = @"+ -=#![]^&@$%:<>/\-çñáÁ统";
var config = new TestEffectiveConfiguration(
assemblyInformationalFormat: $"Special characters: {textWithSpecialCharacters}",
assemblyInformationalIsSemver: false
);

var vars = variableProvider.GetVariablesFor(semVer, config, false);

vars.InformationalVersion.ShouldContain(textWithSpecialCharacters);
}
}
}
5 changes: 4 additions & 1 deletion src/GitVersionCore/Configuration/ConfigExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ public static EffectiveConfiguration CalculateEffectiveConfiguration(this Config
var assemblyVersioningScheme = configuration.AssemblyVersioningScheme.Value;
var assemblyFileVersioningScheme = configuration.AssemblyFileVersioningScheme.Value;
var assemblyInformationalFormat = configuration.AssemblyInformationalFormat;
var assemblyInformationalIsSemver = configuration.AssemblyInformationalIsSemVer;
var assemblyVersioningFormat = configuration.AssemblyVersioningFormat;
var assemblyFileVersioningFormat = configuration.AssemblyFileVersioningFormat;
var gitTagPrefix = configuration.TagPrefix;
Expand All @@ -97,7 +98,9 @@ public static EffectiveConfiguration CalculateEffectiveConfiguration(this Config

var commitMessageVersionBump = currentBranchConfig.CommitMessageIncrementing ?? configuration.CommitMessageIncrementing.Value;
return new EffectiveConfiguration(
assemblyVersioningScheme, assemblyFileVersioningScheme, assemblyInformationalFormat, assemblyVersioningFormat, assemblyFileVersioningFormat, versioningMode, gitTagPrefix,
assemblyVersioningScheme, assemblyFileVersioningScheme,
assemblyInformationalFormat, assemblyInformationalIsSemver,
assemblyVersioningFormat, assemblyFileVersioningFormat, versioningMode, gitTagPrefix,
tag, nextVersion, incrementStrategy,
currentBranchConfig.Regex,
preventIncrementForMergedBranchVersion,
Expand Down
3 changes: 2 additions & 1 deletion src/GitVersionCore/Configuration/ConfigurationBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,8 @@ private static Config CreateDefaultConfiguration()
CommitsSinceVersionSourcePadding = 4,
CommitDateFormat = "yyyy-MM-dd",
UpdateBuildNumber = true,
TagPreReleaseWeight = DefaultTagPreReleaseWeight
TagPreReleaseWeight = DefaultTagPreReleaseWeight,
AssemblyInformationalIsSemVer = true
};

AddBranchConfig(Config.DevelopBranchKey,
Expand Down
5 changes: 4 additions & 1 deletion src/GitVersionCore/Model/Configuration/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,13 @@ public Config()

[YamlMember(Alias = "assembly-informational-format")]
public string AssemblyInformationalFormat { get; set; }

[YamlMember(Alias = "assembly-informational-is-semver")]
public bool AssemblyInformationalIsSemVer { get; set; }

[YamlMember(Alias = "assembly-versioning-format")]
public string AssemblyVersioningFormat { get; set; }

[YamlMember(Alias = "assembly-file-versioning-format")]
public string AssemblyFileVersioningFormat { get; set; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public EffectiveConfiguration(
AssemblyVersioningScheme assemblyVersioningScheme,
AssemblyFileVersioningScheme assemblyFileVersioningScheme,
string assemblyInformationalFormat,
bool assemblyInformationalIsSemver,
string assemblyVersioningFormat,
string assemblyFileVersioningFormat,
VersioningMode versioningMode, string gitTagPrefix,
Expand All @@ -36,11 +37,13 @@ public EffectiveConfiguration(
string commitDateFormat,
bool updateBuildNumber,
int preReleaseWeight,
int tagPreReleaseWeight)
int tagPreReleaseWeight
)
{
AssemblyVersioningScheme = assemblyVersioningScheme;
AssemblyFileVersioningScheme = assemblyFileVersioningScheme;
AssemblyInformationalFormat = assemblyInformationalFormat;
AssemblyInformationalIsSemver = assemblyInformationalIsSemver;
AssemblyVersioningFormat = assemblyVersioningFormat;
AssemblyFileVersioningFormat = assemblyFileVersioningFormat;
VersioningMode = versioningMode;
Expand Down Expand Up @@ -78,6 +81,7 @@ public EffectiveConfiguration(
public AssemblyVersioningScheme AssemblyVersioningScheme { get; private set; }
public AssemblyFileVersioningScheme AssemblyFileVersioningScheme { get; private set; }
public string AssemblyInformationalFormat { get; private set; }
public bool AssemblyInformationalIsSemver { get; private set; }
public string AssemblyVersioningFormat { get; private set; }
public string AssemblyFileVersioningFormat { get; private set; }

Expand Down
10 changes: 7 additions & 3 deletions src/GitVersionCore/VersionCalculation/VariableProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ public VersionVariables GetVariablesFor(SemanticVersion semanticVersion, Effecti

var semverFormatValues = new SemanticVersionFormatValues(semanticVersion, config);

var informationalVersion = CheckAndFormatString(config.AssemblyInformationalFormat, semverFormatValues, semverFormatValues.InformationalVersion, "AssemblyInformationalVersion");
var informationalVersion = CheckAndFormatString(config.AssemblyInformationalFormat, semverFormatValues, semverFormatValues.InformationalVersion, "AssemblyInformationalVersion",
replaceSpecialChars: config.AssemblyInformationalIsSemver);

var assemblyFileSemVer = CheckAndFormatString(config.AssemblyFileVersioningFormat, semverFormatValues, semverFormatValues.AssemblyFileSemVer, "AssemblyFileVersioningFormat");

Expand Down Expand Up @@ -123,7 +124,7 @@ private static void PromoteNumberOfCommitsToTagNumber(SemanticVersion semanticVe
}
}

private string CheckAndFormatString<T>(string formatString, T source, string defaultValue, string formatVarName)
private string CheckAndFormatString<T>(string formatString, T source, string defaultValue, string formatVarName, bool replaceSpecialChars = true)
{
string formattedString;

Expand All @@ -137,7 +138,10 @@ private string CheckAndFormatString<T>(string formatString, T source, string def

try
{
formattedString = formatString.FormatWith(source, environment).RegexReplace("[^0-9A-Za-z-.+]", "-");
formattedString = formatString.FormatWith(source, environment);
if (replaceSpecialChars) {
formattedString = formattedString.RegexReplace("[^0-9A-Za-z-.+]", "-");
}
}
catch (ArgumentException formex)
{
Expand Down