diff --git a/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs b/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs index d56be9834f..74c7048a18 100644 --- a/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs +++ b/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs @@ -19,8 +19,8 @@ public virtual GitVersionVariables OutputVariables { get { - var jsonStartIndex = Output.IndexOf("{", StringComparison.Ordinal); - var jsonEndIndex = Output.IndexOf("}", StringComparison.Ordinal); + var jsonStartIndex = Output.IndexOf('{'); + var jsonEndIndex = Output.IndexOf('}'); var json = Output.Substring(jsonStartIndex, jsonEndIndex - jsonStartIndex + 1); return VersionVariablesHelper.FromJson(json); diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs index cdd5ee2f8a..28c9980813 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs @@ -16,7 +16,7 @@ public class GitVersionExecutorTests : TestBase { private IFileSystem fileSystem; private ILog log; - private IGitVersionCache gitVersionCache; + private GitVersionCache gitVersionCache; private IServiceProvider sp; [Test] @@ -91,33 +91,35 @@ public void CacheKeyForWorktree() [Test] public void CacheFileExistsOnDisk() { - const string versionCacheFileContent = @" - Major: 4 - Minor: 10 - Patch: 3 - PreReleaseTag: test.19 - PreReleaseTagWithDash: -test.19 - PreReleaseLabel: test - PreReleaseLabelWithDash: -test - PreReleaseNumber: 19 - WeightedPreReleaseNumber: 19 - BuildMetaData: - FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - MajorMinorPatch: 4.10.3 - SemVer: 4.10.3-test.19 - AssemblySemVer: 4.10.3.0 - AssemblySemFileVer: 4.10.3.0 - FullSemVer: 4.10.3-test.19 - InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - BranchName: feature/test - EscapedBranchName: feature-test - Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - ShortSha: dd2a29af - VersionSourceSha: 4.10.2 - CommitsSinceVersionSource: 19 - CommitDate: 2015-11-10 - UncommittedChanges: 0 - "; + const string versionCacheFileContent = """ + { + "Major": 4, + "Minor": 10, + "Patch": 3, + "PreReleaseTag": "test.19", + "PreReleaseTagWithDash": "-test.19", + "PreReleaseLabel": "test", + "PreReleaseLabelWithDash": "-test", + "PreReleaseNumber": 19, + "WeightedPreReleaseNumber": 19, + "BuildMetaData": null, + "FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "MajorMinorPatch": "4.10.3", + "SemVer": "4.10.3-test.19", + "AssemblySemVer": "4.10.3.0", + "AssemblySemFileVer": "4.10.3.0", + "FullSemVer": "4.10.3-test.19", + "InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "BranchName": "feature/test", + "EscapedBranchName": "feature-test", + "Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "ShortSha": "dd2a29af", + "VersionSourceSha": "4.10.2", + "CommitsSinceVersionSource": 19, + "CommitDate": "2015-11-10T00:00:00.000Z", + "UncommittedChanges": 0 + } + """; var stringBuilder = new StringBuilder(); void Action(string s) => stringBuilder.AppendLine(s); @@ -145,7 +147,7 @@ public void CacheFileExistsOnDisk() var logsMessages = stringBuilder.ToString(); - logsMessages.ShouldContain("Deserializing version variables from cache file", Case.Insensitive, logsMessages); + logsMessages.ShouldContain("Loading version variables from disk cache file", Case.Insensitive, logsMessages); } [Test] @@ -228,40 +230,42 @@ public void CacheFileIsMissing() gitVersionCalculator.CalculateVersionVariables(); var logsMessages = stringBuilder.ToString(); - logsMessages.ShouldContain("yml not found", Case.Insensitive, logsMessages); + logsMessages.ShouldContain(".json not found", Case.Insensitive, logsMessages); } [TestCase(ConfigurationFileLocator.DefaultFileName)] [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName)] public void ConfigChangeInvalidatesCache(string configFileName) { - const string versionCacheFileContent = @" - Major: 4 - Minor: 10 - Patch: 3 - PreReleaseTag: test.19 - PreReleaseTagWithDash: -test.19 - PreReleaseLabel: test - PreReleaseLabelWithDash: -test - PreReleaseNumber: 19 - WeightedPreReleaseNumber: 19 - BuildMetaData: - FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - MajorMinorPatch: 4.10.3 - SemVer: 4.10.3-test.19 - AssemblySemVer: 4.10.3.0 - AssemblySemFileVer: 4.10.3.0 - FullSemVer: 4.10.3-test.19 - InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - BranchName: feature/test - EscapedBranchName: feature-test - Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - ShortSha: dd2a29af - VersionSourceSha: 4.10.2 - CommitsSinceVersionSource: 19 - CommitDate: 2015-11-10 - UncommittedChanges: 0 - "; + const string versionCacheFileContent = """ + { + "Major": 4, + "Minor": 10, + "Patch": 3, + "PreReleaseTag": "test.19", + "PreReleaseTagWithDash": "-test.19", + "PreReleaseLabel": "test", + "PreReleaseLabelWithDash": "-test", + "PreReleaseNumber": 19, + "WeightedPreReleaseNumber": 19, + "BuildMetaData": null, + "FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "MajorMinorPatch": "4.10.3", + "SemVer": "4.10.3-test.19", + "AssemblySemVer": "4.10.3.0", + "AssemblySemFileVer": "4.10.3.0", + "FullSemVer": "4.10.3-test.19", + "InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "BranchName": "feature/test", + "EscapedBranchName": "feature-test", + "Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "ShortSha": "dd2a29af", + "VersionSourceSha": "4.10.2", + "CommitsSinceVersionSource": 19, + "CommitDate": "2015-11-10T00:00:00.000Z", + "UncommittedChanges": 0 + } + """; using var fixture = new EmptyRepositoryFixture(); @@ -295,33 +299,35 @@ public void ConfigChangeInvalidatesCache(string configFileName) [Test] public void NoCacheBypassesCache() { - const string versionCacheFileContent = @" - Major: 4 - Minor: 10 - Patch: 3 - PreReleaseTag: test.19 - PreReleaseTagWithDash: -test.19 - PreReleaseLabel: test - PreReleaseLabelWithDash: -test - PreReleaseNumber: 19 - WeightedPreReleaseNumber: 19 - BuildMetaData: - FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - MajorMinorPatch: 4.10.3 - SemVer: 4.10.3-test.19 - AssemblySemVer: 4.10.3.0 - AssemblySemFileVer: 4.10.3.0 - FullSemVer: 4.10.3-test.19 - InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - BranchName: feature/test - EscapedBranchName: feature-test - Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f - ShortSha: dd2a29af - VersionSourceSha: 4.10.2 - CommitsSinceVersionSource: 19 - CommitDate: 2015-11-10 - UncommittedChanges: 0 - "; + const string versionCacheFileContent = """ + { + "Major": 4, + "Minor": 10, + "Patch": 3, + "PreReleaseTag": "test.19", + "PreReleaseTagWithDash": "-test.19", + "PreReleaseLabel": "test", + "PreReleaseLabelWithDash": "-test", + "PreReleaseNumber": 19, + "WeightedPreReleaseNumber": 19, + "BuildMetaData": null, + "FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "MajorMinorPatch": "4.10.3", + "SemVer": "4.10.3-test.19", + "AssemblySemVer": "4.10.3.0", + "AssemblySemFileVer": "4.10.3.0", + "FullSemVer": "4.10.3-test.19", + "InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "BranchName": "feature/test", + "EscapedBranchName": "feature-test", + "Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f", + "ShortSha": "dd2a29af", + "VersionSourceSha": "4.10.2", + "CommitsSinceVersionSource": 19, + "CommitDate": "2015-11-10T00:00:00.000Z", + "UncommittedChanges": 0 + } + """; using var fixture = new EmptyRepositoryFixture(); @@ -571,7 +577,7 @@ private IGitVersionCalculateTool GetGitVersionCalculator(GitVersionOptions gitVe this.fileSystem = this.sp.GetRequiredService(); this.log = this.sp.GetRequiredService(); - this.gitVersionCache = this.sp.GetRequiredService(); + this.gitVersionCache = (GitVersionCache)this.sp.GetRequiredService(); return this.sp.GetRequiredService(); } diff --git a/src/GitVersion.Core/GitVersion.Core.csproj b/src/GitVersion.Core/GitVersion.Core.csproj index 7dc1f25ce9..2b84299579 100644 --- a/src/GitVersion.Core/GitVersion.Core.csproj +++ b/src/GitVersion.Core/GitVersion.Core.csproj @@ -15,7 +15,6 @@ - diff --git a/src/GitVersion.Core/OutputVariables/VersionVariablesHelper.cs b/src/GitVersion.Core/OutputVariables/VersionVariablesHelper.cs index 5a41df3a74..60c3bcb734 100644 --- a/src/GitVersion.Core/OutputVariables/VersionVariablesHelper.cs +++ b/src/GitVersion.Core/OutputVariables/VersionVariablesHelper.cs @@ -1,7 +1,6 @@ using System.Text.Encodings.Web; using GitVersion.Extensions; using GitVersion.Helpers; -using YamlDotNet.Serialization; namespace GitVersion.OutputVariables; @@ -14,6 +13,22 @@ public static GitVersionVariables FromJson(string json) return FromDictionary(variablePairs); } + public static string ToJsonString(this GitVersionVariables gitVersionVariables) + { + var variablesType = typeof(VersionVariablesJsonModel); + var variables = new VersionVariablesJsonModel(); + + foreach (var (key, value) in gitVersionVariables.OrderBy(x => x.Key)) + { + var propertyInfo = variablesType.GetProperty(key); + propertyInfo?.SetValue(variables, ChangeType(value, propertyInfo.PropertyType)); + } + + var serializeOptions = JsonSerializerOptions(); + + return JsonSerializer.Serialize(variables, serializeOptions); + } + public static GitVersionVariables FromFile(string filePath, IFileSystem fileSystem) { try @@ -33,20 +48,23 @@ public static GitVersionVariables FromFile(string filePath, IFileSystem fileSyst } } - public static string ToJsonString(this GitVersionVariables gitVersionVariables) + public static void ToFile(GitVersionVariables gitVersionVariables, string filePath, IFileSystem fileSystem) { - var variablesType = typeof(VersionVariablesJsonModel); - var variables = new VersionVariablesJsonModel(); - - foreach (var (key, value) in gitVersionVariables.OrderBy(x => x.Key)) + try { - var propertyInfo = variablesType.GetProperty(key); - propertyInfo?.SetValue(variables, ChangeType(value, propertyInfo.PropertyType)); + var retryAction = new RetryAction(); + retryAction.Execute(() => ToFileInternal(gitVersionVariables, filePath, fileSystem)); } + catch (AggregateException ex) + { + var lastException = ex.InnerExceptions.LastOrDefault() ?? ex.InnerException; + if (lastException != null) + { + throw lastException; + } - var serializeOptions = JsonSerializerOptions(); - - return JsonSerializer.Serialize(variables, serializeOptions); + throw; + } } private static GitVersionVariables FromDictionary(IEnumerable>? properties) @@ -65,11 +83,15 @@ private static GitVersionVariables FromDictionary(IEnumerable>(reader); - var versionVariables = FromDictionary(dictionary); - return versionVariables; + var json = fileSystem.ReadAllText(filePath); + var variables = FromJson(json); + return variables; + } + + private static void ToFileInternal(GitVersionVariables gitVersionVariables, string filePath, IFileSystem fileSystem) + { + var json = gitVersionVariables.ToJsonString(); + fileSystem.WriteAllText(filePath, json); } private static JsonSerializerOptions JsonSerializerOptions() diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 1b637ab304..6eb281d372 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -688,18 +688,14 @@ GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.init -> void GitVersion.VersionCalculation.BaseVersion.Source.get -> string! GitVersion.VersionCalculation.BaseVersion.Source.init -> void GitVersion.VersionCalculation.Caching.GitVersionCache -GitVersion.VersionCalculation.Caching.GitVersionCache.GetCacheDirectory() -> string! -GitVersion.VersionCalculation.Caching.GitVersionCache.GetCacheFileName(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> string! GitVersion.VersionCalculation.Caching.GitVersionCache.GitVersionCache(GitVersion.IFileSystem! fileSystem, GitVersion.Logging.ILog! log, GitVersion.IGitRepositoryInfo! repositoryInfo) -> void -GitVersion.VersionCalculation.Caching.GitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! key) -> GitVersion.OutputVariables.GitVersionVariables? +GitVersion.VersionCalculation.Caching.GitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> GitVersion.OutputVariables.GitVersionVariables? GitVersion.VersionCalculation.Caching.GitVersionCache.WriteVariablesToDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey, GitVersion.OutputVariables.GitVersionVariables! variablesFromCache) -> void GitVersion.VersionCalculation.Caching.GitVersionCacheKey GitVersion.VersionCalculation.Caching.GitVersionCacheKey.GitVersionCacheKey(string! value) -> void GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.get -> string! GitVersion.VersionCalculation.Caching.IGitVersionCache -GitVersion.VersionCalculation.Caching.IGitVersionCache.GetCacheDirectory() -> string! -GitVersion.VersionCalculation.Caching.IGitVersionCache.GetCacheFileName(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> string! -GitVersion.VersionCalculation.Caching.IGitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! key) -> GitVersion.OutputVariables.GitVersionVariables? +GitVersion.VersionCalculation.Caching.IGitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> GitVersion.OutputVariables.GitVersionVariables? GitVersion.VersionCalculation.Caching.IGitVersionCache.WriteVariablesToDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey, GitVersion.OutputVariables.GitVersionVariables! variablesFromCache) -> void GitVersion.VersionCalculation.CommitMessageIncrementMode GitVersion.VersionCalculation.CommitMessageIncrementMode.Disabled = 1 -> GitVersion.VersionCalculation.CommitMessageIncrementMode @@ -869,6 +865,7 @@ static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! lo static GitVersion.Logging.LogExtensions.Write(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogLevel level, string! format, params object![]! args) -> void static GitVersion.OutputVariables.VersionVariablesHelper.FromFile(string! filePath, GitVersion.IFileSystem! fileSystem) -> GitVersion.OutputVariables.GitVersionVariables! static GitVersion.OutputVariables.VersionVariablesHelper.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables! +static GitVersion.OutputVariables.VersionVariablesHelper.ToFile(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables, string! filePath, GitVersion.IFileSystem! fileSystem) -> void static GitVersion.OutputVariables.VersionVariablesHelper.ToJsonString(this GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string! static GitVersion.ReferenceName.FromBranchName(string! branchName) -> GitVersion.ReferenceName! static GitVersion.ReferenceName.Parse(string! canonicalName) -> GitVersion.ReferenceName! diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs index 7a53d414d3..5c936545e7 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs @@ -2,7 +2,6 @@ using GitVersion.Helpers; using GitVersion.Logging; using GitVersion.OutputVariables; -using YamlDotNet.Serialization; namespace GitVersion.VersionCalculation.Caching; @@ -22,80 +21,64 @@ public GitVersionCache(IFileSystem fileSystem, ILog log, IGitRepositoryInfo repo public void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVariables variablesFromCache) { var cacheFileName = GetCacheFileName(cacheKey); - - Dictionary dictionary; - using (this.log.IndentLog("Creating dictionary")) + using (this.log.IndentLog($"Write version variables to cache file {cacheFileName}")) { - dictionary = variablesFromCache.ToDictionary(x => x.Key, x => x.Value); - } - - void WriteCacheOperation() - { - using var stream = this.fileSystem.OpenWrite(cacheFileName); - using var sw = new StreamWriter(stream); - using (this.log.IndentLog("Storing version variables to cache file " + cacheFileName)) + try { - var serializer = new Serializer(); - serializer.Serialize(sw, dictionary); + VersionVariablesHelper.ToFile(variablesFromCache, cacheFileName, this.fileSystem); + } + catch (Exception ex) + { + this.log.Error($"Unable to write cache file {cacheFileName}. Got {ex.GetType().FullName} exception."); } } - - var retryOperation = new RetryAction(6); - retryOperation.Execute(WriteCacheOperation); } - public string GetCacheFileName(GitVersionCacheKey cacheKey) + public GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey cacheKey) { - var cacheDir = PrepareCacheDirectory(); - var cacheFileName = GetCacheFileName(cacheKey, cacheDir); - return cacheFileName; - } - - public string GetCacheDirectory() - { - var gitDir = this.repositoryInfo.DotGitDirectory; - return PathHelper.Combine(gitDir, "gitversion_cache"); - } - - public GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey key) - { - using (this.log.IndentLog("Loading version variables from disk cache")) + var cacheFileName = GetCacheFileName(cacheKey); + using (this.log.IndentLog($"Loading version variables from disk cache file {cacheFileName}")) { - var cacheDir = PrepareCacheDirectory(); - - var cacheFileName = GetCacheFileName(key, cacheDir); if (!this.fileSystem.Exists(cacheFileName)) { this.log.Info("Cache file " + cacheFileName + " not found."); return null; } - - using (this.log.IndentLog("Deserializing version variables from cache file " + cacheFileName)) + try + { + var loadedVariables = VersionVariablesHelper.FromFile(cacheFileName, this.fileSystem); + return loadedVariables; + } + catch (Exception ex) { + this.log.Warning("Unable to read cache file " + cacheFileName + ", deleting it."); + this.log.Info(ex.ToString()); try { - var loadedVariables = VersionVariablesHelper.FromFile(cacheFileName, this.fileSystem); - return loadedVariables; + this.fileSystem.Delete(cacheFileName); } - catch (Exception ex) + catch (Exception deleteEx) { - this.log.Warning("Unable to read cache file " + cacheFileName + ", deleting it."); - this.log.Info(ex.ToString()); - try - { - this.fileSystem.Delete(cacheFileName); - } - catch (Exception deleteEx) - { - this.log.Warning($"Unable to delete corrupted version cache file {cacheFileName}. Got {deleteEx.GetType().FullName} exception."); - } - - return null; + this.log.Warning($"Unable to delete corrupted version cache file {cacheFileName}. Got {deleteEx.GetType().FullName} exception."); } + + return null; } } } + internal string GetCacheFileName(GitVersionCacheKey cacheKey) + { + var cacheDir = PrepareCacheDirectory(); + return GetCacheFileName(cacheKey, cacheDir); + } + + internal string GetCacheDirectory() + { + var gitDir = this.repositoryInfo.DotGitDirectory; + return PathHelper.Combine(gitDir, "gitversion_cache"); + } + private string PrepareCacheDirectory() { var cacheDir = GetCacheDirectory(); @@ -106,5 +89,5 @@ private string PrepareCacheDirectory() return cacheDir; } - private static string GetCacheFileName(GitVersionCacheKey key, string cacheDir) => PathHelper.Combine(cacheDir, string.Concat(key.Value, ".yml")); + private static string GetCacheFileName(GitVersionCacheKey key, string cacheDir) => PathHelper.Combine(cacheDir, string.Concat(key.Value, ".json")); } diff --git a/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs b/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs index e94986023f..90dbd5aad4 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs @@ -5,7 +5,5 @@ namespace GitVersion.VersionCalculation.Caching; public interface IGitVersionCache { void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVariables variablesFromCache); - string GetCacheDirectory(); - GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey key); - string GetCacheFileName(GitVersionCacheKey cacheKey); + GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey cacheKey); } diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs index 6e4ff9dc03..f8c2a4f5ae 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs @@ -25,7 +25,7 @@ public GitVersionTaskExecutor(IFileSystem fileSystem, IGitVersionOutputTool gitV public void GetVersion(GetVersion task) { - var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, fileSystem); + var versionVariables = GitVersionVariables(task); var outputType = typeof(GetVersion); foreach (var (key, value) in versionVariables) { @@ -35,7 +35,7 @@ public void GetVersion(GetVersion task) public void UpdateAssemblyInfo(UpdateAssemblyInfo task) { - var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, fileSystem); + var versionVariables = GitVersionVariables(task); FileHelper.DeleteTempFiles(); FileHelper.CheckForInvalidFiles(task.CompileFiles, task.ProjectFile); @@ -59,7 +59,7 @@ public void UpdateAssemblyInfo(UpdateAssemblyInfo task) public void GenerateGitVersionInformation(GenerateGitVersionInformation task) { - var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, fileSystem); + var versionVariables = GitVersionVariables(task); if (!string.IsNullOrEmpty(task.IntermediateOutputPath)) { @@ -72,13 +72,14 @@ public void GenerateGitVersionInformation(GenerateGitVersionInformation task) var gitVersionOptions = this.options.Value; gitVersionOptions.WorkingDirectory = fileWriteInfo.WorkingDirectory; - var targetNamespace = getTargetNamespace(task); + var targetNamespace = GetTargetNamespace(task); gitVersionOutputTool.GenerateGitVersionInformation(versionVariables, fileWriteInfo, targetNamespace); + return; - static string? getTargetNamespace(GenerateGitVersionInformation task) + static string? GetTargetNamespace(GenerateGitVersionInformation task) { string? targetNamespace = null; - if (string.Equals(task.UseProjectNamespaceForGitVersionInformation, "true", StringComparison.OrdinalIgnoreCase)) + if (bool.TryParse(task.UseProjectNamespaceForGitVersionInformation, out var useTargetPathAsRootNamespace) && useTargetPathAsRootNamespace) { targetNamespace = task.RootNamespace; if (string.IsNullOrWhiteSpace(targetNamespace)) @@ -93,11 +94,17 @@ public void GenerateGitVersionInformation(GenerateGitVersionInformation task) public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) { - var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, fileSystem); + var versionVariables = GitVersionVariables(task); var gitVersionOptions = this.options.Value; var configuration = this.configurationProvider.Provide(gitVersionOptions.ConfigurationInfo.OverrideConfiguration); gitVersionOutputTool.OutputVariables(versionVariables, configuration.UpdateBuildNumber); } + + private GitVersionVariables GitVersionVariables(GitVersionTaskBase task) + { + var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, this.fileSystem); + return versionVariables; + } } diff --git a/src/GitVersion.sln.DotSettings b/src/GitVersion.sln.DotSettings index 6cb996e947..111522c5f3 100644 --- a/src/GitVersion.sln.DotSettings +++ b/src/GitVersion.sln.DotSettings @@ -700,4 +700,6 @@ II.2.12 <HandlesEvent /> <data /> <data><IncludeFilters /><ExcludeFilters /></data> + True + True True